book.xml
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="bookStyle.xsl" ?>
<books xmlns:books="http://www.example.com/books">
<book isbn="978-7741-3031-6">
<!--ISBN-10:7741-3031-6-->
<題名>必修 XML</題名>
<著者>加山恵美</著者>
<publisher>技術評論社</publisher>
<price>2180 JPY</price>
</book>
</books>
bookStyle.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></head>
<body>
<table>
<tr><td><xsl:value-of select="child::books/child::book/題名" /></td></tr>
<tr><td><xsl:value-of select="child::books/book/@isbn" /></td></tr>
<tr><td><xsl:value-of select="child::books/book/child::comment()" /></td></tr>
<tr><td><xsl:value-of select="child::books/book/publisher/../著者" /></td></tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
XSLT による変換は以下のように行われる。
ロケーションパス
ロケーションステップ
ロケーションパスの例
child::hogehoge/attribute::foo
親子関係の軸
隣接関係の軸
軸 | * で指定するもの |
---|---|
attribute | すべての属性ノード |
namespace | すべての名前空間ノード |
その他 | すべての要素ノード |
述語
省略形
軸とノード | 省略形 |
---|---|
child:: | 丸ごと省略可能 |
attribute:: | @ |
self::node() | . |
parent::node() | .. |
descendant-or-self:: | // |
関数の種類 | 関数の役目 |
---|---|
ノードセット関数 | ノードから情報を取得 |
文字列関数 | 文字列の処理 |
ブール関数 | 真偽値に関する処理 |
数値関数 | 数値の簡単な処理 |
テンプレートルールの一例
<xsl:template match="/">
<hoge><xsl:value-of select="foo/bar"/></hoge>
</xsl:template>
条件分岐 (xsl:if 要素 )
<xsl:if test="式">真の場合の処理</xsl:if>
条件分岐 (xsl:choose 要素 )
<xsl:choose>
<xsl:when test="式">真の場合の処理</xsl:when>
<xsl:otherwise test="式">真の場合の処理</xsl:otherwise>
</xsl:choose>
繰り返し (xsl:for-each 要素 )
<xsl:for-each select="式">繰り返し処理</xsl:for-each>