私がやろうとしているのは、XML ドキュメントを取り、たとえばhttp://example.org/data.xmlと言って、XSL スタイルシートを適用して表示することです。(ドキュメント自体を変更してディレクティブを追加することはできません)
したがって、次のようなユーティリティ XML ファイルがいくつかあります。
ラッパー.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wrapper [
<!ENTITY content SYSTEM "http://example.org/data.xml">
]>
<?xml-stylesheet type="text/xsl" href="unwrap.xsl" ?>
<wrapper>
&content;
</wrapper>
unwrap.xsl:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="stylesheet.xsl"/>
<xsl:template match="/wrapper/node()[1]">
<xsl:apply-imports/>
</xsl:template>
</xsl:stylesheet>
要約すると、stylesheet.xsl はhttp://example.org/data.xml用に作成され、ブラウザーは wrapper.xml を指し、ユーザーには変換されたhttp://example.org/data.xmlが表示されます。
これは、IE (および Chrome) では期待どおりに機能するが、Firefox では機能しないというまれなケースの 1 つです。
AFAIK Firefox は外部 XML エンティティをサポートしていますが、XSL コードでは見えないようです。2006 年のこの記事を見つけました。Firefox 1.5 でのこの問題について説明しています (私は 3.5.3 を使用しています)。
これに対する回避策はありますか?