2008年2月5日火曜日

XSLでクォーテーション内に文字を入れたい時

例えばXMLで以下のような記述があったとします。
<link>
<url path="http://www.google.co.jp" name="Googleのホーム"></url>
<url path="http://www.yahoo.co.jp" name="Yahooのホーム"></url>
</link>

これにXSLを当てて動的に以下のようにしたい時
<a href="http://www.google.co.jp">Googleのホーム</a>
<a href="http://www.yahoo.co.jp">Yahooのホーム</a>

普通にやると以下のように書きます。
<xsl:template match="url">
 <a href="<xsl:value-of select="@path" />">="<xsl:value-of select="@name" /></a>
</xsl:template>

しかし、、、これでブラウズすると「文字 '< ' は、属性値内に使用できません。」とエラーになってしまいます。どうするか。。。で最終的のこんな具合に

<xsl:template match="link/url">
 <a>
<xsl:attribute name="href"><xsl:value-of select="@path" /></xsl:attribute>
<xsl:value-of select="@name" />
</a>
</xsl:template>

<xsl:attribute name>を使うと属性が作成できるようです。

0 件のコメント:

自己紹介

最近気胸になりました。でタバコやめました。