2

次の XML があるとします。

<element><![CDATA[<p>Look at this beautiful house: &amp;#8962;</p>]]></element>

この XSL-T:

<xsl:template match='/element'>
    <xsl:value-of select="." disable-output-escaping="yes" />
</xsl:template>

それを次のように変換します。

<p>Look at this beautiful house: &amp;#8962;</p>

したがって、CDATA は問題なく削除されますが、適切な表現に変換するにはどうすればよい&amp;#8962;ですか: ⌂ ?

4

2 に答える 2

1

私はそれを修正しました:

<xsl:value-of select="replace(current(), '&amp;amp;', '&amp;')" disable-output-escaping="yes"/>

アンパサンドを XML で直接使用しているため、ここではアンパサンドをエスケープする必要がありました。そのため、プロセッサはアンパサンドを必要な形式に変換しますreplace(current(), '&amp;', '&')

置換機能があるため、これにはXSLT v2を使用しています。

残念ながら、ソースで壊れた入力を修正することはできませんでした。これは、私たちの仕事の分野ではよくある問題です。:)

于 2013-10-18T06:17:50.360 に答える