|
|
連載
.NETで簡単XML
第6回 .NETプログラムでXSLTスクリプトを使う
株式会社ピーデー 川俣 晶
2003/07/08 |
|
|
■XSLTミニ入門その2 属性に対応する出力
XSLTでは、要素だけでなく属性も扱うことができる。それには特に難しいことはなく、XPath式中で属性の名前の手前に@記号を付けて、属性であることを示すだけでよい。実際にそれを行った例を次に示す。
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet href="sample02.xslt" type="text/xsl"?>
<database>
<person name="伊能忠敬">
<birth>1745</birth>
</person>
<person name="間宮林蔵">
<birth>1775</birth>
</person>
</database>
|
|
処理するXML文書(sample02.xml) |
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="@name">
<p>指定された人名は<xsl:value-of select="." />です。</p>
</xsl:template>
<xsl:template match="/">
<html>
<head>
<title>人名の表示</title>
</head>
<body>
<h1>人名の表示</h1>
<xsl:apply-templates select="/database/person/@name" />
</body>
</html>
</xsl:template>
</xsl:stylesheet>
|
|
属性を扱うXSLTスクリプト(sample02.xslt) |
XML文書sample02.xmlをInternet Explorerで開くと以下のようになる。
|
Internet Explorer 6でsample02.xmlを開いたところ |
XSLTスクリプトsample02.xsltでは、人名部分を属性で指定して出力している。 |
これは複雑な説明は必要ないだろう。最初の例のname要素を属性に置き換えたものである。属性であっても、XPath式で指定できるものは、要素と同じように指定することができる。
■XSLTミニ入門その3 XPath式の値を出力
ここまで見てきた例は、xsl:apply-templates要素のselect属性を用いて、テンプレートを適用させるものであった。しかし、テンプレートを適用するのではなく、ただ単に式の値が出力できればよいこともある。例えば、先ほどの例では、人名は単なるテキストであって、それに対して複雑なテンプレートを適用させなくてもよい。そのような場合には、xsl:value-of要素を使うことができる。以下はそれを使った例である。
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet href="sample03.xslt" type="text/xsl"?>
<database>
<person>
<name>伊能忠敬</name>
<birth>1745</birth>
</person>
<person>
<name>間宮林蔵</name>
<birth>1775</birth>
</person>
</database>
|
|
処理するXML文書(sample03.xml) |
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="/">
<html>
<head>
<title>人名の表示</title>
</head>
<body>
<h1>人名の表示</h1>
<p>1人目の人名は<xsl:value-of select="(/database/person/name)[1]" />です。</p>
<p>2人目の人名は<xsl:value-of select="(/database/person/name)[2]" />です。</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
|
|
XSLTスクリプト(sample03.xslt) |
XML文書をInternet Explorerで開くと以下のようになる。
|
Internet Explorer 6でsample02.xmlを開いたところ |
XSLTスクリプトsample03.xsltでは、select属性で指定したXPath式の内容をそのまま出力する。 |
ここでポイントになるのは、もちろんxsl:value-of要素である。この要素は、select属性で指定されたXPath式の内容をテキストとしてそのまま出力する。ここでは、2つのxsl:value-of要素が記述されているが、それぞれ、1つのname要素を指定する式が指定されている。式で指定されたものはname要素ではあるが、実際に出力されるのは、その内容のテキストのみである。要素の開始タグや終了タグは出力されず、テキストだけが文字列として出力される。
このように、xsl:apply-templates要素とxsl:value-of要素は、それぞれ異なる機能を持っていて、異なる場面で活用される。この2つをうまく使い分けることが、XSLTを使いこなす上での面白さの1つである。
Insider.NET 記事ランキング
本日
月間