ニュース記事を含む XML ドキュメントを持っています。ニュース記事の body 要素には、プレーン テキストの中に p タグが含まれています。XSL を使用して本文を取得する場合、たとえば
<xsl:value-of select="body" />
p タグが取り除かれているようです。Visual Studio 2005 の XSL の実装を使用しています。
これを回避する方法はありますか?ありがとう。
使ってみて
<xsl:copy-of select="body"/>
代わりは。同じに関するw3schoolsのドキュメントから:
この
<xsl:copy-of>
要素は、現在のノードのコピーを作成します。注: 現在のノードのネームスペース ノード、子ノード、および属性も自動的にコピーされます。
入力ドキュメントを制御できない場合は、copy-of が機能するはずです。
http://www.xml.com/pub/a/2000/06/07/transforming/index.htmlより
一方、xsl:copy-of 要素は、テンプレートが選択する各ノードのサブツリー全体をコピーできます。xsl:copy-of 要素の select 属性に適切な値が設定されている場合、これには属性が含まれます。次の例ではの場合、テンプレートはタイトル要素ノードとそのすべての子孫ノードをコピーします。つまり、タグ、サブ要素、および属性を含む完全なタイトル要素をコピーします。"
<xsl:template match="title">
<xsl:copy-of select="*"/>
</xsl:template>
入力ドキュメントを制御できる場合は、CDATAが最適です。
XML 要素の値 (これは XSLT だけでなく DOM 実装にも当てはまります) は、その子孫のすべてのテキスト ノードを連結したものです。XSLT ではvalue-of
、要素の値を発行し、要素のcopy-of
コピーを発行します。
これは、エンジンが <p> タグを解釈しているためです (出力では除外されます)。「disable-output-escaping=yes|no」属性を使用して、コンテンツを「そのまま」にしたいことを指定する必要があります。
<xsl:value-of select="body" disable-output-escaping="yes"/>