XMLってなぁに? 初級編 第16回
2005/08/14
この文書は執筆時点(2004/後半)での知識を基にしており、現状とあっていない可能性があります。
第16回
こんどはAタグの方を文字実体参照に変更してみよう
a.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<head>
<title>TITLE</title>
</head>
<body>
ヘッダ
<xsl:apply-templates />
フッタ
</body>
</html>
</xsl:template>
<xsl:template match="会社">
<a href="<xsl:value-of select="@link" />"><xsl:value-of select="." /></a>
</xsl:template>
</xsl:stylesheet>
a.xslをIEで表示してみよう。今度はうまく表示されるようになった。
ではa.xmlの方を開いて変換結果の確認をする。
結果
ヘッダ <a href="http://example.com">example.com商社</a> フッタ
なんてこった。aタグ自身が文字として表に出てきているじゃないか。
このままではHTMLの属性にリンクを仕込むことが出来なくなってしまう。
この場合に利用できるのはxsl:attribute要素だ。
ひとつ上の要素の属性nameにテキストノードの中身を流し込むことが出来る。
a.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<head>
<title>TITLE</title>
</head>
<body>
ヘッダ
<xsl:apply-templates />
フッタ
</body>
</html>
</xsl:template>
<xsl:template match="会社">
<a>
<xsl:attribute name="href">
<xsl:value-of select="@link" />
</xsl:attribute>
<xsl:value-of select="." />
</a>
</xsl:template>
</xsl:stylesheet>
下の方の会社テンプレートを見てほしい。
このように利用することで、hrefの中身を変更することが出来る。
これで無事
ヘッダ example.com商社 フッタ
と表示されリンクが有効になっていると思う。
今回で基礎編は終了
今回までの内容でXML+XSLTサイトの構築は十分に出来る。
ぜひチャレンジしてほしい
参照:
xsl:attribute XSLT1.0 7.1.3 xsl:attribute を用いたアトリビュートの生成