XSLTの実体参照

前回に続き某Webサービスに挑戦中。
返されてきたXMLを使用し画像をHTML表示しようとするがうまくできない。
XSLT変換されたHTMLソースを見てみると

<img src=”http://sun.d-064.com/include/implession.php?flag1=samnail1&amp;amp;pid=4565″>

となっていた。
問題は、「&amp;」の部分。
ここは「&」とならなければならない。
# ちなみに"&"の実体参照は"&"となる。
これをXSLTで

<xsl:element name=”img”>
<xsl:attribute name=”src”><xsl:value-of select=”ImageUrlSmall” /></xsl:attribute>
</xsl:element>

と書き変換していた。
変換結果は「&amp;」。
xsl:value-ofの属性としてdisable-output-escaping="yes"を指定すると実体参照を変換してくれるらしいが、何故かxsl:attributeの属性値として使用すると実体参照がそのまま残ってしまう。
# xsl:attributeの外で使用すると普通に変換(&→&)される。
仕方ないので、↓こんな感じで変換することにした。

<xsl:text disable-output-escaping=”yes”><img src=”</xsl:text>
<xsl:value-of select=”ImageUrlSmall” disable-output-escaping=”yes”/>
<xsl:text disable-output-escaping=”yes”>”&gt;</xsl:text>

これで、正しく「&」と変換され画像表示ができるようになった。

← ブログ一覧へ戻る