この文書について

 この文書は W3C によって公開されている XSLT2.0 の草案の一部を個人的に和訳したものです。短時間でざっと訳しただけですので、誤訳が含まれている可能性はかなり高いと思われます。内容についてはあまり当てにはならず、正確であることはまったく保障できません。よって、正確な情報を得るためには原文での確認をお願いします。

 原文の著作権は W3C が、この文書の著作権(二次著作権)は私、よしともが所有します。この文書に関しては、本格的に原文の和訳を行っている個人や団体で希望する方がいましたらご自由にどうぞ。

 個人的にコーディングを変更している部分がありますが、表示内容にはほとんど影響のない範囲です。
 オリジナルのコードを訳しながら編集したわけではないので、一部コーディングが抜けている部分があります。
 和訳部分のリンクは全て原文を参照しています。

机の片隅に戻る


W3C

XSL Transformations (XSLT)
バージョン 2.0

W3C 草案 2001 年 12 月 20 日

このバージョン(訳注:原文):
http://www.w3.org/TR/2001/WD-xslt20-20011220/
以前のバージョン:
http://www.w3.org/TR/xslt20
編者:
Michael Kay (Software AG) <Michael.Kay@softwareag.com>

17 結果ツリー

17.1 主要な結果ツリー

<!-- カテゴリー: declaration -->
<xsl:destination
  format = qname
  href = { uri-reference } />

 xsl:destination エレメントは、主要な結果ツリーの URI を定義し、このツリーを連続させるために使用される出力フォーマットを自由に指定するために使用されます。

疑問(destination エレメントの名前): xsl:destination エレメントのよりよい名前を見つけることは可能ですか?xsl:principal-result が示唆されました。

 もし指定されるなら、format 属性の値は QName でなくてはいけません。QNamexsl: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結果ツリーからのリンクによって参照がそれに付けられることを可能にするためです。

17.2 第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 でなくてはいけません。QNamexsl: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:messagexsl:attribute などを使用して作成されたツリーである場合に xsl:result-document を使用するエラーであることを意味します。(訳注:この文章はどうしても上手く訳せません・・。)

 [ERR103] 変換処理が同じ URI を備えた2本以上の結果ツリーを生成することは動的エラーです。プロセッサーはエラーを示さなくてはなりません。

 技術的に、xsl:result-document 命令を評価する結果は空のシーケンスです。これは、部分である内容生成子(訳注:原文は content constructor)の結果にそれが少しもノードを与えないことを意味します。