HTMLページにレンダリングしたいXMLテキストがあります。このテキストには、エンティティ表現でレンダリングしたいアンパサンドが含まれています&
。
ソースXMLでこのアンパサンドをエスケープするにはどうすればよいですか?試してみ&
ましたが、これは実際のアンパサンド文字(&
)としてデコードされ、 HTMLでは無効です。
&
そのため、XML出力を使用するWebページのようにレンダリングされるようにエスケープしたいと思います。
XML に が含まれている場合&
、これはテキストになります&
。
それを HTML で使用すると、 としてレンダリングされ&
ます。
XML 1.0仕様の§2.4に従って、を使用できるはずです&
。
試してみました& しかし、これは許可されていません。
別の問題ではありませんか?XMLは、これをアンパサンドをエスケープする方法として明示的に定義しています。
この&
文字自体が XML のエスケープ文字であるため、解決策はそれと Unicode の 10 進数を連結して、&
XML 解析エラーが発生しないようにすることです。つまり、文字&
をに置き換え&
ます。
CDATA
タグを使用する:
<![CDATA[
This is some text with ampersands & other funny characters. >>
]]>
&
正常に動作するはずです。ウィキペディアには、XMLで事前定義されたエンティティのリストがあります。
& を試しましたが、うまくいきませんでした。Wim ten Brink の回答に基づいて、私が試したところ、うまくいきました。
仲間の開発者の 1 人が、& を使用するように提案してくれました。レンダリング回数に関係なく機能しました。
&
は、XML ドキュメントのほとんどのセクションでアンパサンドを表す方法です。
XML を HTML 内に表示したい場合は、最初に適切にエンコードされた XML を作成し (これには への変更が必要です&
) &
、次にそれを使用して適切にエンコードされた HTML を作成する必要があります (これには再び への変更&
が必要&
です)。その結果、次のようになります。
&amp;
XML エンコーディングの詳細については、次を参照してください。
<xsl:text disable-output-escaping="yes">& </xsl:text>
トリックを行います。
XML が以下のようになっているかどうかを検討してください。
<Employees Id="1" Name="ABC">
<Query>
SELECT * FROM EMP WHERE ID=1 AND RES<>'GCF'
<Query>
</Employees>
<>
エラーがスローされるため、直接使用することはできません。その場合、その<>
代わりに使用できます。
<Employees Id="1" Name="ABC">
<Query>
SELECT * FROM EMP WHERE ID=1 AND RES <> 'GCF'
<Query>
</Employees>
14.1 XML で特殊文字を使用する方法には、すべてのコードがあります。