この文書は W3C によって公開されている XSLT2.0 の草案の一部を個人的に和訳したものです。短時間でざっと訳しただけですので、誤訳が含まれている可能性はかなり高いと思われます。内容についてはあまり当てにはならず、正確であることはまったく保障できません。よって、正確な情報を得るためには原文での確認をお願いします。
原文の著作権は W3C が、この文書の著作権(二次著作権)は私、よしともが所有します。この文書に関しては、本格的に原文の和訳を行っている個人や団体で希望する方がいましたらご自由にどうぞ。
個人的にコーディングを変更している部分がありますが、表示内容にはほとんど影響のない範囲です。
オリジナルのコードを訳しながら編集したわけではないので、一部コーディングが抜けている部分があります。
和訳部分のリンクは全て原文を参照しています。
Copyright ©2001 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
<!-- カテゴリー: declaration -->
<xsl:destination
format = qname
href = { uri-reference } />
xsl:destination
エレメントは、主要な結果ツリーの URI を定義し、このツリーを連続させるために使用される出力フォーマットを自由に指定するために使用されます。
もし指定されるなら、format
属性の値は QName でなくてはいけません。QName は xsl:destination
エレメントのために範囲の中で namespace 宣言を使用して拡張します。拡張 QName は、stylesheet の中で指定された名前付き出力定義の拡張 QName と一致する必要があります。結果ツリーが連続する場合、結果ツリー([18 連続性]を参照)の連続をコントロールする xsl:output
宣言を識別します。format
属性が省略される場合、無名の出力定義は主要な結果ツリーの連続性をコントロールするために使用されます。
[ERR099] format
属性の値が有効な QName でない場合、あるいはそれが stylesheet の中で出力定義の拡張 QName と一致しない場合、それはスタティックエラーです。
stylesheet のトップレベルに1つ以上の xsl:destination
エレメントがある場合、最も上位のの import が使用されます。[ERR100] もし、より上位の import を備えた stylesheet のトップレベルにさらに別の xsl:result-document
エレメントがなければ、上位の import を備えた stylesheet のトップレベルに1つ以上の xsl:result-document
エレメントがある場合、それはスタティックエラーです。
href
属性は、主要な結果ツリーの URI を定義します。属性値テンプレートは、主要なソースドキュメントのドキュメント・ノードに基づいた単集合フォーカスを使用して拡張します。属性の有効値は URI でなければなりません。実装は、使用されるかもしれない絶対的な URI の形式に対する制限を置くかもしれません。しかし、それはどんな制限も強化するためには要求されません。どんな法的な相対 URI も受理されるに違いありません。
有効値が相対 URI である場合、実装定義の基礎 URI を基準として決定されます。
主要な結果ツリーの URI は実装定義される場合、href
属性を省略しても構いません。
ノート:主要な結果ツリーのための URI を指定する主な理由は、第2結果ツリーからのリンクによって参照がそれに付けられることを可能にするためです。
<!-- カテゴリー: instruction -->
<xsl:result-document
format = qname
href = { uri-reference }>
<!-- 内容: content-constructor -->
</xsl:result-document>
xsl:result-document
命令は第2結果ツリーを作成するために使用されます。xsl:result-document
エレメントの内容は内容生成子(訳注:原文は content constructor)であり、これはノードのシーケンスを作成すると評価されます。ドキュメント・ノードはその子供としてノードのこのシーケンスで作成されます。tree はこのドキュメント・ノードに定着し(訳注:原文は rooted at)、第2結果ツリーを形成します。
xsl:result-document
命令は、最終的な第2結果ツリーの URI を定義し、このツリーを連続化させるために使用される出力フォーマットを自由に指定してもよい。
もし指定されるなら、format
属性の値は QName でなくてはいけません。QName は xsl:destination
エレメントのために範囲の中で namespace 宣言を使用して拡張します。拡張 QName は、stylesheet の中で指定された名前付き出力定義の拡張 QName と一致する必要があります。結果ツリーが連続する場合、結果ツリー([18 連続性]を参照)の連続をコントロールする xsl:output
宣言を識別します。format
属性が省略される場合、無名の出力定義は主要な結果ツリーの連続性をコントロールするために使用されます。
[ERR101] format
属性の値が有効な QName でない場合、あるいはそれが stylesheet の中で出力定義の拡張 QName と一致しない場合、それはスタティックエラーです。
href
属性は必須(訳注:原文は mandatory)です。属性の有効値は URI である必要があります。実装は、使用されるかもしれない絶対的な URI の形式に対する制限を置くかもしれません。しかし、それはどんな制限も強化するためには要求されません。どんな法的な相対 URI も受理されるに違いありません。
有効値が相対URIである場合、実装定義の基礎 URI を基準として決定されます。
ちょうど主要な結果ツリーが連続することをそれが可能にしてもよいように、プロセッサーは第2結果ツリーが連続することを可能にしてもよい。連続性については[18 連続性]で説明されます。しかしながら、実装(例えば、書き込み可能な filestore へのアクセスのない環境の中で走るプロセッサー)は第2結果ツリーの連続を支援するためには要求されません。第2結果ツリーの連続を支援しない実装は format
属性を無視しなければなりません。そのような実装はそれを判別するためにその URI を使用して、(連続しなかった)結果ツリーへのアクセスのある手段で適用を提供しなければなりません。例えば、下記は、フレーム内容としての2つの第2結果ドキュメントと一緒に、2つのフレームを備えた HTMLフレームセットを定義する結果ドキュメントを作成するでしょう。
<xsl:template match="/"> <html> <head><title>Frame example</title></head> <frameset cols="20%, 80%"> <frame src="toc.html"/> <xsl:result-document href="toc.html"> <html> <head><title>Table of Contents</title></head> <body> <xsl:apply-templates mode="toc" select="*"/> </body> </html> </xsl:result-document> <frame src="body.html"/> <xsl:result-document href="body.html"> <html> <head><title>Body</title></head> <body> <xsl:apply-templates select="*"/> </body> </html> </xsl:result-document> </frameset> </html> </xsl:template>
[ERR102] 現在の結果 tree が主要な結果ツリーでも第2結果ツリーでもない場合に、xsl:result-document
命令を評価する動的エラーです。プロセッサーはエラーを示さなくてはなりません。これは、例えば、それが現在の結果ツリーが xsl:variable
を使って作成された一時的ツリーである場合や、あるいは xsl:message
・xsl:attribute
などを使用して作成されたツリーである場合に xsl:result-document
を使用するエラーであることを意味します。(訳注:この文章はどうしても上手く訳せません・・。)
[ERR103] 変換処理が同じ URI を備えた2本以上の結果ツリーを生成することは動的エラーです。プロセッサーはエラーを示さなくてはなりません。
技術的に、xsl:result-document
命令を評価する結果は空のシーケンスです。これは、部分である内容生成子(訳注:原文は content constructor)の結果にそれが少しもノードを与えないことを意味します。