Мы использовали php для создания интерфейса, с помощью которого клиент мог бы загрузить графику svg, а затем нажать кнопку, чтобы выполнить преобразование XSLT.
Интерфейс и базовый XSLT ранее работали безупречно, до недавнего времени,процесс xslt всегда будет завершаться с ошибкой и возвращать ошибку, например: не смог найти www.w3.org или sth (не могу вспомнить точно).
Наш клиент использует Adobe Illustrator для создания SVG-графики, а затем использует наш инструмент длявыполните преобразование, и SVG-графика, которая напрямую выходит из Adobe Illustrator, имеет следующие три строки в верхней части каждого SVG-файла:
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00
Build0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG
1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
Мы провели некоторое исследование и пришли к выводу, что w3.orgзаносит в черный список сервер нашего клиента (Windows Server 2003).Нормальный обходной путь - сделать решатель.Так как клиент даст нам только 1 час или около того, чтобы сделать дистанционное управление своими вещами, поэтому я думаю, есть ли более простой способ решить эту проблему.
Один из предложенных способов - разместить файл.dtd на клиентском сервере, поэтому каждый входящий SVG-файл может ссылаться на него, и мы используем php для манипулирования SVG-файлом, сканируем файл, пока не найдет строку "<!DOCTYPE.."
, затем заменим всю строку другой "<!DOCTYPE.."
, в которойURL-адрес теперь указывает на локальный файл flatfile.dtd, сохраните файл и запустите процесс XSLT.Затем после перевода мы выполняем обратный процесс, который заключается в сбросе URL-адреса dtd с нашего локального dtd на стандартный w3.org.
Я попытаюсь сделать это завтра, и наша демонстрация будет в пятницу.Так что я просто ищу совета здесь, если этот способ реалистичен и есть ли риск?Или, могут ли какие-либо эксперты предложить более эффективные альтернативы для решения этой проблемы?
Заранее спасибо.