2011-07-24 8 views
1

XMLファイルを別のフォーマットで出力するためにXSLファイルを使用しています(別のフォーマットのXMLファイルを出力しています)問題はhtmlエスケープシーケンス(ї)のUnicodeチャーターが含まれていて、デコードされ、実際の値に変換され、私はそれらをHTMLエスケープシーケンス(ї)のままにする必要がありますXSLデコードのhtmlエスケープシーケンス

私はこれを試してみましたが、それは仕事をしなかったと私はhtmlエスケープシーケンスが必要です

<xsl:template match="@*|node()"> 
<xsl:copy> 
<xsl:apply-templates select="@*|node()" disable-output-escaping="yes" /> 
</xsl:copy> 
</xsl:template> 

は、事前にあなたに感謝

+0

この数字の文字参照は、「©」や「©」のようなものですか? –

答えて

0

disable-output-escapingは、デフォルトで「no」に設定され、xsl:value-ofxsl:text要素にのみ適用されます。すべてのXSLTプロセッサがそれをサポートする必要があるわけではありません。

XSLT 2.0は廃止された出力をエスケープし、"character maps"という概念を導入しました。しかし、すべてのXSLTプロセッサがXSLT 2.0を使用できるわけではなく、採用がやや制限されています。使用しているものによっては、XSLTプロセッサがXSLT 2.0をサポートしていないことがあります。私はそれを調べるだろう。

2

あなたが意味するものを理解しない限り、ディセーブル出力エスケープは使用しないでください。これは魔法の妖精の粉塵ではありません。あなたの苦情は、エスケープしたい場所でエスケープされていない文字なので、エスケープを無効にすることはほとんど役に立たないということです。

XSLTプロセッサは、入力でエスケープされた文字と入力されなかった文字を認識しません.XSLパーサはその情報を提供しません。したがって、実際に出力に入力を正確に反映させたい場合は、XMLパーサがそれを見る前にXMLを前処理するしかありません。これを行う1つの方法は、Andrew Welchのlexevプリプロセッサです。

通常、入力でエスケープされているかどうかにかかわらず、非ASCII文字がエスケープされ、出力エンコーディングをus-asciiに設定することで達成できます。要素名に非ASCII文字がない場合またはコメントが表示され、エラーが発生します。

関連する問題