2. テンプレートルール
XSLT 2章 テンプレートルール
XSLT を説明するためには XML 文書が必要ですので、下記の文書を以降の説明で使用することとします。
2.1 テンプレートルールの定義<xsl:template match = pattern name = qname priority = number mode = qname> <!-- Content: (xsl:param*, template) --> </xsl:template> ソースツリーから結果ツリーへの変換は、XML 文書を XSL ファイルで変換して、結果ツリーを生成することで実現します。1つのスタイルシートの中には複数のテンプレートルールを記述することができます。テンプレートルールとは、一言で言えば「変換の定義」で、XML 文書中のどの要素を、どのように変換したいかを記述したものです。このテンプレートルールは、xsl:template 要素で定義します。 match 属性には、ソースノードやルールの適用先ノードを識別するパターンを指定します。パターンとして指定するのは XPath 式です。match 属性は、xsl:template 要素が name 属性を含む場合を除いて必ず指定しなければいけません。name 属性にはテンプレートの名前を指定します。 以下のスタイルシートに含まれるテンプレートルールは、 person 要素が現れるたびに、テキスト "A Person" を出力するように指定しています。 <?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="person">A Person</xsl:template>
</xsl:stylesheet>
上記のスタイルシートを people.xml に適用すると以下の出力を得ます。 <?xml version="1.0" encoding="utf-8"?> A Person A Person 2.2 テキストの動的生成<xsl:value-of select = string-expression disable-output-escaping = "yes" | "no" /> テンプレート内では、xsl:value-of 要素を使用することにより、ソースツリーからテキストを抽出し結果ツリー内にテキストノードを生成したり、変数の値を格納することができます。 xsl:value-of 要素は、select 属性の値として指定した式を使ってこの処理を行います。 必須である select 属性の属性値には、値を抽出したいノードを XPath 式で指定します。この式を評価すると、XPath の string 関数の呼び出しを実行したかのように、結果オブジェクトは文字列に変換されます。文字列が空の場合、テキストノードは生成されません。 disable-output-escaping 属性は任意属性です。この属性が値として yes を持つなら、文書が出力されるときに値の中の < や & などの文字は、エンティティ参照や文字参照で置き換えられることはありません。 下記のスタイルシートは <p> タグと </p> タグの間にマッチした person 要素の子要素 name の値だけを出力するように指定しています。 <?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="person">
<p><xsl:value-of select="name" /></p>
</xsl:template>
</xsl:stylesheet>
このスタイルシートを people.xml に適用すると以下のテキストが出力されます。 <?xml version="1.0" encoding="utf-8"?>
<p>
Alan
Turing
</p>
<p>
Richard
P
Feynman
</p>
|
![]()
![]()
|