W3C勧告XSLTのバージョンXSLT 2.0の「Repetition / 繰り返し・反復」とは
XSL Transformations (XSLT) Version 2.0 / W3C Recommendation 23 January 2007の目次に沿った日本語訳です。
当サイト管理人が2009年04月、意訳したものですが、構文解釈の違いや翻訳の違いが含まれるかもしれません。正式文書はW3C 各種仕様書(英語版)である事を予めご了承ください。
<< 6. 反復 / Features of the XSLT Language
7 繰り返し・反復 / Repetition |
<!-- カテゴリ: 命令
-->
<xsl:for-each
select = expression>
<!-- Content: (xsl:sort*,
sequence-constructor) -->
</xsl:for-each>
そのシーケンスにあるアイテムごとに1回、 xsl:for-each
命令内でシーケンスコンストラクタを評価中に xsl:for-each
命令は、 アイテムのシーケンスにあるアイテムごとに処理されます。
select
属性が要求され、そしてその式は、入力シーケンスを呼んだシーケンスの為に評価しなければいけません。
もし、 xsl:sort
要素がある場合には、
(参照先: 13 Sorting) 入力シーケンスは、ソートしたシーケンスを作る為にソートされます。
その他のものは、ソートしたシーケンスは、入力シーケンスと同じです。
xsl:for-each
命令は、シーケンスコンストラクタを含みます。
シーケンスコンストラクタは、次に続くようなfocus/フォーカスセットを伴い、ソートしたシーケンス内でアイテムごとに1回評価されます。:
文脈アイテムは、処理されているアイテムです。 もし、これが、ノードであれば、それはまた、文脈ノードとなるでしょう。 もし、それが、ノードでなければ、存在しない文脈ノードとなるでしょう : いくつかの文脈ノードを参照する試みは、 回復されない動的エラーの中で生じるでしょうという事です。
文脈位置は、ソートしたシーケンスにあるこのアイテムの位置です。
文脈サイズは、(入力シーケンスのサイズと同じ)ソートしたシーケンスのサイズです。
シーケンスコンストラクタを評価した入力シーケンスにある各アイテムにおいては、
アイテムのシーケンスを創出します(参照先: 5.7 シーケンスコンストラクタ)。
これらの出力シーケンスは、結合されます;もし、ソートしたシーケンスにあるアイテム Q が、アイテム P に続く場合には、
文脈アイテムとして Q を伴うシーケンスコンストラクタを評価した結果は、文脈アイテムとして P を伴うシーケンスコンストラクタを評価した結果の後で結合されます。
xsl:for-each
命令の結果は、アイテムのシーケンスが結合されます。
注釈:
XSLT 1.0では、選択したノードは、文書指定内で処理されました。 XSLT 2.0では、( path 式と union 式のような) XPath 1.0の下で有効となるであろうXPath式は、ノードのシーケンスを返すでしょう、それは、文書指定の中に既に存在し、その為、後方互換性が維持されます。
例えば、この構造を伴う与えられたXML文書は、
<customers> <customer> <name>...</name> <order>...</order> <order>...</order> </customer> <customer> <name>...</name> <order>...</order> <order>...</order> </customer> </customers>
次に続くのは、 customer
要素ごとの行を伴うテーブルを含んでいるHTML文書の作成でしょう
<xsl:template match="/"> <html> <head> <title>Customers</title> </head> <body> <table> <tbody> <xsl:for-each select="customers/customer"> <tr> <th> <xsl:apply-templates select="name"/> </th> <xsl:for-each select="order"> <td> <xsl:apply-templates/> </td> </xsl:for-each> </tr> </xsl:for-each> </tbody> </table> </body> </html> </xsl:template>
8. 条件付き処理 / Conditional Processing >>