■ 動作確認
では、実際にXML文書とXSLTスタイルシートを作成して動作確認してみます。以下の2つのファイルをご覧下さい。
■ sample01.xml
<?xml version="1.0" encoding="Shift_JIS"?>
<?xml-stylesheet href="test01.xsl" type="text/xsl"?>
<個人情報>
<氏名>例題太郎</氏名>
<住所>大阪</住所>
<電話>000-0000-0000</電話>
<メール>reidai@ykr414.com</メール>
</個人情報>
■ test01.xsl
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="個人情報">
<html>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="氏名">
<b>氏名 : <xsl:value-of select="."/></b>
</xsl:template>
<xsl:template match="住所">
<b>住所 : <xsl:value-of select="."/></b>
</xsl:template>
<xsl:template match="電話">
<b>電話 : <xsl:value-of select="."/></b>
</xsl:template>
<xsl:template match="メール">
<b>メール : <xsl:value-of select="."/></b>;
</xsl:template>
</xsl:stylesheet>
これらのファイルを上から読んでいきます。
以下XSLTプロセッサの処理を視点に見て下さい。
まず、XSLTスタイルシートである「test.xsl」ファイルでmatch属性
に「/」(ルートノード)を指定したテンプレートから処理が始まります。
XML文書の上から下に向かって順番に、記述された行にテンプレートを適用します。
XML文書の内容で、ルートノードのすぐ下に「個人情報」要素があるので、
match属性に「個人情報」を指定したテンプレートを適用するので
「<html><body>」を出力し、
次に「<xsl:apply-templates/>」
が記述されているので、XML文書の個人情報ノードの下にあるノードを変換対象にします。
そして次にXML文書の「個人情報」ノードの下で一番初めに記述されているのは、
「氏名」なので、match属性に
「氏名」が指定されたテンプレートを適用します。
「<b>氏名 : 要素の内容</b>」
を出力します。
そのようにして、「住所」ノードを指定したテンプレート、
<b>住所 : 要素の内容</b>
「電話」ノードを指定したテンプレート、
<b>電話 : 要素の内容</b>
「メール」ノードを指定したテンプレート、
<b>メール : 要素の内容</b>
を出力し、「個人情報」ノード以下にある子ノードの処理を終えたら
「個人情報」ノードに戻って、
「</body></html>」を出力、
そしてはじめの「/」テンプレートに戻って処理を終了します。
|