要素値の変換


要素の値を検索する

前回の変換処理は要素を別の要素に変換するというものでした
この処理は、抽象的なオブジェクトをやり取りする時に使うことができますが
要素が保有する属性や値を変換することはできません
要素の値や属性を得るには、それを検索して適切にアクセスしなければなりません

要素の値を得られるようになれば、基本的な情報変換が可能になります
ドキュメントやデータベースの情報を他の形式に変換できるのは魅力的です

要素の値を得るには、XSLT が現在処理しているノードの値を得ればよいのです
ノードの値はxsl:value-of 要素から得ることができます

<xsl:value-of select="XPath式" />

xsl:value-of 要素には select 属性を指定しなければなりません
この select 属性に指定するのは XPath 式です

XPath 式とは W3C によって定められている XML の仕様のひとつです
XPath は、XML 文書の特定のノードを表すために用いられる文を定義しています
XSLT では、ノードの位置を選択するために、頻繁に XPath が用いられます
詳しくは、XPath 編を参照してください

select 属性は、現在 xsl:template が処理しているノードから相対的な位置を検索します
例えば、単純にノード名を指定すれば子ノードの値を得ることができます
細かい処理が必要であれば XPath を学習する必要があります
実は、xsl:template 要素の match 属性にも XPath 式が使われます
<?xml version="1.0" encoding="Shift-JIS" ?>
<?xml-stylesheet type="text/xsl" href="02_003_000.xsl"?>

<table>
	<politician>
		<name>小泉 純一郎</name>
		<party>自由民主党</party>
		<position>総裁</position>
	</politician>
	<politician>
		<name>麻生 太郎</name>
		<party>自由民主党</party>
		<position>政務調査会長</position>
	</politician>
	<politician>
		<name>鳩山 由紀夫</name>
		<party>民主党</party>
		<position>常任幹事</position>
	</politician>
</table>
<?xml version="1.0" encoding="Shift-JIS" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	<xsl:template match="/">
		<html>
			<xsl:apply-templates />
		</html>
	</xsl:template>

	<xsl:template match="table">
		<body><table border="1" cellspacing="0">
			<tr><th>名前</th><th>所属政党</th><th>役職</th></tr>
			<xsl:apply-templates />
		</table></body>
	</xsl:template>

	<xsl:template match="politician">
		<tr>
			<td><xsl:value-of select="name" /></td>
			<td><xsl:value-of select="party" /></td>
			<td><xsl:value-of select="position" /></td>
		</tr>
	</xsl:template>
</xsl:stylesheet>
サンプルを見る

上の XML 文書は政治家の個人情報を表すデータテーブルだと仮定します
politician 要素の子要素は、名前、所属政党、役職などを表しています
これらにアクセスすることができれば、XSLT を用いて他の形式に変換できます
サンプルの XSLT では、politician 要素に一致するテンプレート内で
xsl:value-of 要素を指定して各子ノードの値を取得しようと試みています

XSLT は XHTML に変換しているので、Internet Explorer で確認することができます
XML で表された個人情報が、テーブルとして表示されるでしょう

このサンプルから、XSLT の大きな可能性を知ることができます
ノードの値を移し変えることができれば、情報を抽象化した XML 文書から
HTML として表示することはもちろん、データベースに転送することもできます



前のページへ戻る次のページへ