中の技術日誌
 ホーム / 上へ

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="会社">
 &lt;a href="<xsl:value-of select="@link" />"&gt;<xsl:value-of select="." />&lt;/a&gt;
</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 を用いたアトリビュートの生成

[戻る]


勉強会: 05/18 大阪 登録受付中

中の技術日誌
コンテンツ
わんくま同盟
わんくま同盟
わんくま同盟
広告
バナー
MVP LOGO
MSMVP Visual C# Since 2004/04-2007/03
MCP LOGO
070-316
姉妹サイト
姉妹サイト:じゃんぬのC#, VB.NET 入門
じゃんぬの
C#, VB.NET 入門
検索
Google

ブログ本家
広告