気の向くままに辿るIT/ICT
webzoit.netウェブサイトホームページ
XSLT

【Additional Functions / 新規追加された機能】XSLT 2.0/XSL Transformations Version2.0/Extensible Stylesheet Language Transformations Version2.0

ウェブ造ホーム前へ次へ
サイト内検索
カスタム検索
XSLT 2.0の新規追加された機能とは?

【Additional Functions / 新規追加された機能】XSLT 2.0/XSL Transformations Version2.0/Extensible Stylesheet Language Transformations Version2.0

XSLT 2.0新規追加された機能とは

 W3C勧告XSLTバージョンXSLT 2.0の「Additional Functions / 新規追加された機能」とは

 XSL Transformations (XSLT) Version 2.0 / W3C Recommendation 23 January 2007の目次に沿った日本語訳です。

 当サイト管理人が2009年04月、意訳したものですが、構文解釈の違いや翻訳の違いが含まれるかもしれません。正式文書はW3C 各種仕様書(英語版)である事を予めご了承ください。

<< 15. 正規表現 / Regular Expressions

XSLT 2.0新規追加された機能目次


16 新規追加された機能 / Additional Functions
 16.1 多種多様なソース文書 Multiple Source Documents
 16.2 テキストファイル読み込み Reading Text Files
 16.3 キー Keys
  16.3.1 [ xsl:key ]定義
  16.3.2 キー機能
 16.4 数値初期化
  16.4.1 10進フォーマット定義 Defining a Decimal Format
  16.4.2 ピクチャ文字(映像文字)処理 Processing the Picture String
  16.4.3 ピクチャ文字(映像文字)解析 Analysing the Picture String
  16.4.4 数値初期化 Formatting the Number
 16.5 日付と時間の初期化
  16.5.1 ピクチャ文字(映像文字) The Picture String
  16.5.2 言語・暦・地域コード The Language, Calendar, and Country Arguments
  16.5.3 日付・時間フォーマットの例
 16.6 多岐にわたる追加機能
  16.6.1 [ current ]
  16.6.2 [ unparsed-entity-uri ]
  16.6.3 [ unparsed-entity-public-id ]
  16.6.4 [ generate-id ]
  16.6.5 [ system-property ]

16 追加された機能・関数

このセクションは、主要な関数ライブラリに追加するXSLT仕様を記述します。 これらの追加した関数のいくつかはまた、スタイルシートにある宣言で記述した情報の利用もします。; このセクションはまた、これらの宣言も記述します。

16.1 複数のソース文書

document($uri-sequence as item()*) as node()*
document($uri-sequence as item()*,$base-node as node()) as node()*

document 関数は、URIによって識別したXML文書へのアクセスを許容します。

最初の引数は、URI参照のシーケンスを含みます。 2番目の引数は、もし、存在する場合には、URIが最初の引数の中に含んだいくつかの相対URI参照を解決する為に利用される基準URIであるノードです。

絶対URI参照のシーケンスは、次に続くように含まれます。

  • $uri-sequence にあるアイテムにおいては、それは、 xs:stringxs:anyURI、または、 xs:untypedAtomic のインスタンスであり、その値は、 xs:anyURI に投入されます。 もし、その結果となるURI参照が、絶対URI参照である場合には、それは、 存在するものとして 利用されます。 もし、それが相対URI参照である場合には、もし、 提供した、または、他の静的文脈からの基準URIに対するものである場合には、 $base-node の基準URIに対して解決されます。 (これは、ふつうは、スタイルシートモジュールの基準URIになります。). 相対URIは、[RFC3986]で定義した規則を利用して基準URIに対して解決されます。

  • ノードである $uri-sequence にあるアイテムにおいては、そのノードは、原子化されます。 その結果は、アイテムが全て xs:stringxs:anyURI 、または、 xs:untypedAtomic のインスタンスであるシーケンスにしなければいけません。 これらの値のそれぞれは、 xs:anyURI に投入され、そして、もし、その結果となるURI参照が、絶対URI参照である場合には、 存在するものとして 利用されます。 もし、それが、相対URI参照である場合には、それが、もし、提供した、または、他でそれを含んだノードの基準URIに対するものである場合には、 $base-node の基準URIに対して解決されます。

注釈:

関数を呼ぶ事におけるXPath規則は、もし、提供した2番目の引数の値が単独のノードではない何かである場合には、タイプエラーである事を保証します。 もし、 XPath 1.0互換性モードが利用可能な場合には、 ノードのシーケンスは、提供される場合があり、そしてシーケンスにあるその最初のノードが利用されるでしょう。

これらの絶対URI参照のそれぞれは、その時、次に続くように処理されます。 URI参照に存在するいくつかのフラグメント識別子は削除され、結果となる絶対URIは、文字列に投入され、 [関数と演算子]で定義したdocFO 関数を通過します。 これは、文書ノードを返します。 もし、 docFO 関数の評価中にエラーが現れる場合には、 プロセッサは、通常の方法でこのエラーをシグナル出力する場合、または、 失敗したURIが document 関数の結果にいくつかのノードを提供しないケースでは失敗を無視する事によって修復する場合があります

もし、そのURI参照が、存在しないフラグメント識別子を含んだ場合には、 この文書ノードは、 document 関数によって返したノードのシーケンスの中に含まれます。

もし、そのURI参照が、フラグメント識別子を含んだ場合には、 フラグメント識別子は、URIによって識別したリソース表現のメディアタイプにおける規則と一致するものと解釈され、 返した文書ノードの descendant-or-self ノードであるゼロ以上のノードを選択する為に利用されます。 2.3 変換を初期化するで記述したように、そのメディアタイプは、変換における評価文脈の一部として利用可能にします。

[ERR XTRE1160] URI参照が、フラグメント識別子を含む際には、もし、そのメディアタイプが、プロセッサによって識別されたものであるか、 または、もし、そのフラグメント識別子が、そのメディアタイプにおいて識別するフラグメントにおける規則と一致しない場合 または、もし、そのフラグメント識別子が、ノードのシーケンスではない何かを選択する場合(例えば、もし、それが、テキストノード内にある文字の範囲を選択する場合) には、それは、回復可能な動的エラーです。 付加的な回復動作は、そのフラグメント識別子を無視することであり、そしてその文書ノードを返します。 プロセッサによって識別したメディアタイプのセットは、implementation-definedです。

注釈:

回復動作は現在、XSLT1.0とは異なります。

関数によって返したノードのシーケンスは、重複が存在しない文書命令の中にあります。 この命令は、 $uri-sequence 引数の中で提供されたURIにおける命令と関連してはいけません。

注釈:

これらの規則の効果の1つは、XML実体である場合、 xml:base が利用される場合、既知のスタイルシートモジュールの基準URIを提供した場合を除き、 document("") が、含んでいるスタイルシートモジュールの文書ノードを参照する事です([RFC3986]にある最も確実な規則)。 スタイルシートモジュールを含んでいるXMLリソースは、いくつかの他のXML文書であったかのように確実に処理されます、 例えば、 xsl:text 要素の存在しない特別認識、存在しないコメントの特別扱いと処理命令等々。

16.2 テキストファイルを読み込む

unparsed-text($href as xs:string?) as xs:string?
unparsed-text($href as xs:string?$encoding as xs:string) as xs:string?

unparsed-text 関数は、外部リソース(例えば、ファイル)を読み込み、文字列としてその内容を返します。

$href 引数は、URIから得た中にある文字列にしなければいけません。 そのURIは、存在しないフラグメント識別子を含まなければならず、また、テキストとして読み込まれる事が可能なリソースを識別しなければいけません。 もし、そのURIが、相対URIである場合には、静的文脈から得た基準URIへの関連が解決されます。

もし、 $href 引数の値が、カラのシーケンスである場合には、その関数は、カラのシーケンスを返します。

注釈:

もし、異なる基準URIが、妥当なものである場合(例えば、ソース文書から読み込む相対URIを解決している際)には、その相対URIは、 unparsed-text 関数にそれを通過する前に resolve-uriFO 関数を利用して解決されるべきです。

$encoding 引数は、もし、存在する場合には、エンコード方式の名前です。 この属性における値は、XML宣言にある encoding 属性におけるものとしての同じ規則に続きます。 手法ごとに限定した値は、 utf-8utf-16 であると認識する事が要求されます。

外部リソースのエンコード方式は、次に続くように決められます:

  1. 外部エンコード方式情報は、もし、他が利用可能であれば、利用されます

  2. もし、リソースのメディアタイプが、 text/xml 、または、 application/xml (参照先: [RFC2376])である場合、 または、もし、それが、 text/*+xml、または、 application/*+xml の慣例とマッチする場合 (参照先: [RFC3023]且つ、もしくは、または、そのとって代わるものである場合)、 エンコード方式は、他には[XML 1.0]で記述したように認識されます。

  3. $encoding 引数の値は、もし、他が存在する場合に利用されます。

  4. プロセッサは、他に似たようなエンコード方式を決める為の発見に役立つ implementation-definedを利用する場合があります

  5. UTF-8 が仮定されます。

注釈:

上記規則は、[XInclude]を伴う堅牢性における選択です。 XMLメディアタイプを伴うファイルは、取得したテキストが、含んでいる文書のCDATAセクションにある解析しないXMLとして含まれるためにある場合には、この関数における利用ケースである為、特別に扱われ、プロセッサはコードを再利用できるようになっているのでXML外部実体におけるエンコード方式検出を実行します。

[ERR XTDE1170] もし、URIが、 フラグメント識別子を含む場合、または、もし、それが、テキストを含んでいるリソースを取得する為に利用される事ができない場合には、 それは、回復されない動的エラーです。

[ERR XTDE1190] もし、リソースが、記述したエンコード方式を利用してUnicode文字にデコードされる事ができないオクテット(8個1組)を含む場合、 または、もし、その結果となる文字列が、XML文字列を許容しない文字列である場合には、それは、回復されない動的エラーです。 これは、要求したエンコード方式をサポートしないプロセッサというケースを含みます。

[ERR XTDE1200] もし、 unparsed-text 関数の2番目の引数が省略され、 プロセッサが外部情報を利用してエンコード方式を推論できず、 エンコード方式が UTF-8 でない場合には、それは、回復されない動的エラーです。

その結果は、URIを利用して取得したリソースのテキストを含んでいる文字列です。

注釈:

もし、そのテキストファイルが、 <& のような文字列を含む場合には、 これらの文字列は、最終結果ツリー、また シリアライズしたXML、または、HTMLのように書かれる文字列である際には、 &lt;&amp; として特別に出力されるでしょう。 もし、 これらの文字列が、実際にマークアップを表す場合(例えば、もし、そのテキストファイルが、HTMLを含む場合)には、 スタイルシートは、xsl:value-of 命令の disable-output-escaping 属性を利用して ファイルを出力する為のマークアップとしてそれらを書く事を試みる事ができます (参照先: 20.2 出力エスケープを使用不可にする)。 注記:しかしながら、手法がこの特性をサポートする事を要求されるわけではありません。

例:解析しないHTML常用文(Boilerplate:通信で「常用文」として使われる俗語)をコピーする

この例は、HTMLファイルを読み込み、そしてシリアライズした出力ファイルをHTMLのようにコピーをする事を試みます:

<xsl:output method="html"/>
<xsl:template match="/">
	<xsl:value-of select="unparsed-text('header.html', 'iso-8859-1')"
		disable-output-escaping="yes"/>
	<xsl:apply-templates/>
	<xsl:value-of select="unparsed-text('footer.html', 'iso-8859-1')"
		disable-output-escaping="yes"/>
</xsl:template>

 

例:複数行のシーケンスに入力ファイルを分割する

しばしば、複数行のシーケンスにテキストファイルを分割し、文字列として行ごとに表示する事があります。 これは、XPath tokenizeFO 関数との結合の中にある unparsed-text 関数を利用する事によって取得される事ができます。 例えば、:

<xsl:for-each select="tokenize(unparsed-text($in), '\r?\n')">
 ...
</xsl:for-each>

注記としては、 unparsed-text 関数は、行終端を標準化しません。 この例は、それゆえに、UNIXとWindowsの双方が認識する為に書かれている行終端、言い換えると単独の新しい行 (#x0A) 文字、または、キャリッジリターン / ラインフィードのペア (#x0D #x0A)において変換します。

unparsed-text 関数評価中のエラーは回復されないので、2つの関数が、固有の引数が成功する事を伴っているか否かを決める為にスタイルシートを許容する事が提供されます:

unparsed-text-available($href as xs:string?) as xs:boolean
unparsed-text-available( $href  as xs:string?,
$encoding  as xs:string?) as xs:boolean

unparsed-text-available 関数は、 文字列を返すであろう同一の引数を伴う unparsed-text 関数を呼ぶかどうかを決めます。

もし、その第一引数が、カラのシーケンスである場合には、その関数は、 false を返します。 もし、第二引数が、カラのシーケンスである場合には、その関数は、第二引数が省略されたかのようにふるまいます。

他のケースでは、その関数は、もし、成功するであろう同じ引数を伴って unparsed-text を呼ぶ場合には true を返し、 もし、回復されない動的エラーを伴い失敗するであろう同じ引数を伴って unparsed-text を呼ぶ場合には false を返します。

注釈:

これは、 unparsed-text-available 関数が、URIによって識別したリソースを読み込む事を実際に試みる事を要求し、 そして、正しくエンコードされているかをチェックし、XMLで妥当である存在しない文字を含みます。 手法は、これらのチェック、例えば、 unparsed-text 関数をすぐに呼ぶ事を当てにしてリソースのコンテンツが妥当であったかをキャッチする事によって繰り返す浪費を回避する場合があります。 あるいはまた、手法は、個々が内部呼び出しを生成する為に if (unparsed-text-available(A)) then unparsed-text(A) else ... のような式を改めて書く事が可能な場合があります。

関数 unparsed-textunparsed-text-available は、 [関数と演算子]で定義した関数 docFOdoc-availableFO としての持続において同じ要求を持ちます。 これが意味するところは、ユーザーが持続のレベルの縮小において明示的に指定した要求を持つ場合を除き、これらの関数のいずれかは、 もし、変換の進行中に同じ引数を伴って2回呼ばれる場合には、それぞれの時点で同じ結果を返さなければいけません。; 更に、 unparsed-text-available を呼んだ結果は、 同じ引数を伴う unparsed-text を呼ぶ次にすぐ起こる結果を伴って一致しなければいけません

16.3 キー

キーは、厳密なクロスリファレンス構造に含まれる文書を伴う作業の為の方法を提供します。 それらは、与えられる属性または、子要素における与えられる値を持つ文書にあるノードを配置する事を容易にさせ、 それらは、効率的にする為に必要な文書にある正確なパスへのアクセス手法の為のヒントを提供します。

16.3.1 xsl:key 宣言

<!-- カテゴリ:宣言 -->
<xsl:key
  name = qname
  match = pattern
  use? = expression
  collation? = uri>
  <!-- Content: sequence-constructor -->
</xsl:key>

xsl:key 宣言は、キーを宣言する為に利用されます。 name 属性は、キーの名前を記述します。 name 属性の値は、QNameであり、それは、5.1 適格な名前で記述したように拡張されます。 match 属性は、パターンです; xsl:key 要素は、 match 属性で記述したパターンとマッチするノード全てに適用します。

[定義:  キーは、同じ名前を共有するスタイルシートにある xsl:key 宣言のセットとして定義されます。 ]

キーの値は、 use 属性を利用して、または、 含んだシーケンスコンストラクタという意味で、といういずれかで記述される場合があります。

[ERR XTSE1205] もし、 xsl:key 宣言が、 use 属性とカラの内容を持つ、 または、もし、それがカラの内容を持ち、存在しない use 属性を持つ場合には、 それは、静的エラーです。

もし、 use 属性が存在する場合には、その値は、キーの値を記述しているです。 式は、文脈ノードとしてパターンとマッチするノードを伴って評価されるでしょう。 式を評価した結果は、原子化されます。

とてもよく似た(ケースは)、 もし、シーケンスコンストラクタが、 存在する場合には、それは、キーの値を決める為に利用されます。 シーケンスコンストラクタは、文脈ノードとしてパターンとマッチするノードを伴って評価されるでしょう。 シーケンスコンストラクタを評価した結果は、原子化されます。

[定義:  use 属性にある式と xsl:key 宣言にあるシーケンスコンストラクタは、 キー仕様としてのスタックを参照されます。 キー仕様は、値を決め、このキーを利用してノードを見つける為に利用される場合があります。 ]

注釈:

存在しない要求は、キーの値全ては、同じタイプを持つべきというものです。

xsl:key 宣言の存在は、もし、キー仕様の値のいくつかが、(ノードに適用する際に)既に知られている場合には、 match パターンとマッチするノードを発見する事を容易にさせます。 それはまた、効果的にする為に必要なこれらの値という意味によってノードへアクセスする手法の為のヒントを提供します(インデックスを構築するのに適当である多くの手法、または、これを獲得する為のハッシュテーブル)。 注記としては、一般的に、 キー仕様は、値または、ノードを配置する為に利用される場合があるこれらの内の1つのシーケンスを返します。

注釈:

xsl:key 宣言は、記述したソース文書に基づくものではありません。 key 関数が、キーを利用してノードを配置する為に利用される際にのみ、適用するソース文書が決められます。 キーは、いくつかのソース文書(一時的なツリーを含む)にあるノードを配置する為に利用される事が可能ですが、それぞれは、1文書だけを探す key 関数という利用です(1文書を探す為にこの関数を利用します)。

付加的な collation 属性は、キーマッチングの目的において等価である2つの文字列かどうかを決める際にだけ利用されます。 特に、 2つの値 $a$b は、もし、関数呼び出し compare($a、 $b, $collation) の結果がゼロである場合には、等しくなるように考慮されます。 xsl:key 宣言における有効な照合は、その collation 属性で記述した照合であり、もし、存在する場合には、 xsl:key 要素の基準URIに対して、または、他の xsl:key 宣言におけるスコープにある 既定照合に対して解決されます; その有効な照合は、キーを作り上げる全ての xsl:key 宣言において同じにしなければいけません。

[ERR XTSE1210] もし、 xsl:key 宣言が、 値が、(基準URIに対して解決後に)照合を参照するものとしての手法によって認識したURIではない collation 属性を持つ場合には、それは静的エラーです。

[ERR XTSE1220] もし、同じキー名と異なる効果の照合を伴うスタイルシートにあるいくつかの xsl:key 宣言がある場合には、それは静的エラーです。 もし、 それらのURIが、 xs:anyURI 値比較における規則の下で等しい、または、 もし、その手法が、同じ照合を参照している異なるURIであると決める事ができる場合には、2つの照合は、同じです。

それは、(以下を)持つ事を可能とします:

  • 同じ名前を持つ複数の xsl:key 宣言;

  • これらが、同じキー名、または、異なるキー名を持つかどうかといういくつかの異なる xsl:key 宣言の match パターンとマッチするノード;

  • その キー仕様 から値を1つ以上返すノード;

  • ノードを1つ以上識別するキー値(異なるノードにおけるキー値は、一意にしてはいけません)。

より高い取り込み優先度を伴う xsl:key 宣言は、より低い取り込み優先度であるその他を超えません; スタイルシートにある全ての xsl:key 宣言は、それらの取り込み優先度に関わらず、効果があります。

16.3.2 key 関数
key($key-name as xs:string$key-value as xs:anyAtomicType*) as node()*
key( $key-name  as xs:string,
$key-value  as xs:anyAtomicType*,
$top  as node()) as node()*

key 関数は、 idFO 関数がIDの為に行う事をキーの為に行います。

$key-name 引数は、キーの名前を記述します。 引数の値は、5.1 適格な名前で記述したように拡張される語彙的なQNameにしなければいけません

[ERR XTDE1260] もし、その値が妥当なQNameではない、または、もし、QNameの前置詞におけるスコープ内に存在しない名前空間宣言がある、または、 もし、QNameを拡張する事によって含んだ名前が スタイルシートにあるいくつかの xsl:key 宣言の拡張した名前と同じではない場合には、 それは、回復されない動的エラーです。 もし、プロセッサが、静的にエラーを回避する事が可能な場合(例えば、引数が文字列リテラルとして提供される際)には、 プロセッサは、静的エラーとして付加的にシグナル出力する場合があります

key 関数への $key-value 引数は、シーケンスとして考慮されます。 要求したキー値のセットは、標準関数変換規則を利用して提供した引数の値を原子化する事によって形成されます。 結果となる原子化された値のそれぞれは、要求したキー値として考慮されます。 関数の結果は、文書命令にあるノードのシーケンス、重複削除を伴うノードのシーケンス、 文字列比較の際に、これらの要求したキー値の内の1つと等しいキー仕様を評価した結果が値を含む場合に xsl:key 宣言の collation 属性を利用して、論点にある2つの値におけるXPath eq 演算子に適した規則の下で、 提供したキー名と同じ名前である xsl:key 宣言によって対等とされる選択したサブツリー(参照先:以下)にあるそれらのノード比較にあるノードのシーケンスです。 もし、2つの値が比較対象がない状況になる場合、存在しないエラーが報告されます。;それらは、等しくないものとしてこの関数の目的においてみなされます。

注釈:

eq 演算子における規則の下では、区分されない原子化された値は、他のオペランド(演算の対象となる数値)のタイプではなく文字列に変換されます。 これが意味するところは、例えば、もし、 key 関数を呼ぶ中にある区分されない原子化された値を供給して use 属性にある式が日付を返す場合には、カラのシーケンスを返すであろうという事です。

もし、第二引数が、カラのシーケンスである場合には、関数の結果は、カラのシーケンスになるでしょう。

異なる規則は、後方互換性挙動が利用可能な際に適用します。 特に、もし、キーの定義にある xsl:key 要素のいくつかが、後方互換性挙動を利用可能である場合には、 キー仕様の値と key 関数の第二引数の値は、比較が実行される前にシーケンスにあるアイテムごとに投入を適用する事によって文字列のシーケンスを原子化した後、双方ともに変換されます。

第三引数は、選択したサブツリーを識別する為に利用されます。 もし、その引数が存在する場合には、その選択したサブツリーは、 ancestor-or-self ノードとして $top を持つノードのセットです。 もし、その引数が省略される場合には、その選択したサブツリーは文脈ノードを含んでいる文書です。 これが意味するところは、有効な第三引数は、 / を既定とするという事です。

[ERR XTDE1270] もし、 存在しない 文脈ノードがある、 または、もし、ツリーのルートが文書ノードではない文脈ノードを含んでいる2つの引数を伴う key 関数を呼ぶ事; 、または、もし、ツリーのルートが、文書ノードではない第三引数の中に提供したノードを含んでいる場合に第三引数を伴って関数を呼ぶ事は、 それは、回復されない動的エラーです。

key 関数の結果は、次のようなものとしてより具体的に記述される事が可能です。 その結果は、次に続く条件を記述するノード $N ごとに含んでいるシーケンスです:

  • $N/ancestor-or-self::node() intersect $top は、カラではありません。 (もし、第三引数が省略される場合には、 / を既定とする $top です)

  • $N は、 $key-name 引数で記述した名前とマッチする name 属性である xsl:key 宣言の match 属性で記述したパターンとマッチします。

  • xsl:key 宣言のキー仕様が、 $N を基準とする個々のフォーカスを伴って評価される際には、 結果となるシーケンスの原子化された値は、上で記述したように選択した照合を伴う eq 演算子の規則の下で $key-value として提供したシーケンスの原子化された値にある少なくとも1つのアイテムと比較が等価である値を含みます。

key 関数によって返したシーケンスは、(同じアイデンティティを持っているノードである)重複が削除される文書命令にあります。

例:クロスリファレンスに続くキーを利用する

例えば、(以下の)宣言が与えられ(るとすると)

<xsl:key name="idkey" match="div" use="@id"/>

key("idkey",@ref) は、 id(@ref)として同じノードを返すでしょう、 XMLソース文書内でID属性だけを宣言したと仮定すると:

<!ATTLIST div id ID #IMPLIED>

そしてその文脈ノードの ref 属性が、存在しないホワイトスペースを含むものとします

関数ライブラリを記述している文書が、関数を定義する為に prototype 要素を利用するものとします

<prototype name="sqrt" return-type="xs:double">
	<arg type="xs:double"/>
</prototype>

また、関数名を参照する為の function 要素(を利用するものとすると)

<function>sqrt</function>

その時、そのスタイルシートは、次に続くように参照と定義間にハイパーリンクを生成可能で:

<xsl:key name="func" match="prototype" use="@name"/>
<xsl:template match="function">
<b>
	<a href="#{generate-id(key('func',.))}">
		<xsl:apply-templates/>
	</a>
</b>
</xsl:template>
<xsl:template match="prototype">
	<p>
		<a name="{generate-id()}">
			<b>Function: </b>
			...
		</a>
	</p>
</xsl:template>

2つの引数を伴って呼んだ際に、 その key 関数は常に文脈ノードとして同じ文書にあるノードを返します。 いくつかの他の文書からノードを取得する事は、文脈ノードを変更する為、または、第三引数を提供する為のいずれかで必要となります。

例:他の文書を参照する為のキーを利用する

例えば、形式 <bibref>XSLT</bibref> の中に参照する図書目録を含む文書があるものとします、 そして、フォームの中に登録を伴う図書目録データベースを含んでいるXML文書 bib.xml を分割するものとします:

<entry name="XSLT">...</entry>

その時、そのスタイルシートは、 bibref 要素を変換する事に続いて利用できるものとします:

<xsl:key name="bib" match="entry" use="@name"/>
<xsl:template match="bibref">
	<xsl:variable name="name" select="."/>
	<xsl:apply-templates select="document('bib.xml')/key('bib',$name)"/>
</xsl:template>

注釈:

これは、path 式にある / 演算子の右手側を呼ぶ関数を持つ事についてはXPath 2.0にある性能に依存します。

次に続くコードはまた、作業します:

<xsl:key name="bib" match="entry" use="@name"/>
<xsl:template match="bibref">
	<xsl:apply-templates select="key('bib', ., document('bib.xml'))"/>
</xsl:template>

16.4 数字フォーマット

format-number($value as numeric?$picture as xs:string) as xs:string
format-number( $value  as numeric?,
$picture  as xs:string,
$decimal-format-name  as xs:string) as xs:string

format-number 関数は、 $picture 引数によって記述した[ picture string ]と もし、存在しない $decimal-format-name 引数がある場合には、$decimal-format-name 引数によって名付けた decimal-format または、既定 decimal-format (十進フォーマット)を利用して 文字列として $value をフォーマットします。 [ picture string ]のシンタックスは、16.4.2 [ picture string ]を処理するで記述されます。

$value 引数は、いくつかの数値データタイプ ( xs:doublexs:floatxs:decimal 、または、 xs:integer を含んでいるそれらのサブタイプ)で構成する場合があります。 注記としては、もし、 xs:decimal が提供される場合には、それは、精度のロスを含む事ができる昇格のように xs:double に自動的に昇格されません。

もし、提供した $value 引数の値が、カラのシーケンスである場合には、その関数は、仮に提供した値が xs:doubleNaNだったかのようにふるまいます。

$decimal-format-name の値は、語彙的なQNameにしなければならず、 それは、5.1 適格な名前で記述したように拡張されます。 関数の結果は、提供した数字を表現する文字列にフォーマットされます。

[ERR XTDE1280] もし、 $decimal-format-name 引数のように記述した名前が、妥当ではない QName、または、もし、 その前置詞が、スコープ内名前空間宣言の中で宣言されていない、または、 もし、スタイルシートが、 マッチする拡張QNameを伴う decimal-format の宣言を含まない場合には、 それは、回復されない動的エラーです。 もし、プロセッサが、静的なエラーを回避する事を可能とする場合(例えば、引数が文字列リテラルとして提供した際)には、 プロセッサは、静的エラーのように付加的にこれをシグナル出力する場合があります

16.4.1 十進フォーマットを定義する

<!-- カテゴリ: 宣言 -->
<xsl:decimal-format
  name? = qname
  decimal-separator? = char
  grouping-separator? = char
  infinity? = string
  minus-sign? = char
  NaN? = string
  percent? = char
  per-mille? = char
  zero-digit? = char
  digit? = char
  pattern-separator? = char />

xsl:decimal-format 要素は、 format-number 関数によって利用した [ picture string ]の解釈を操作します。

スタイルシートは、複数の xsl:decimal-format 宣言を含む場合、 または、取り込みスタイルシートモジュールがまた、 xsl:decimal-format 宣言を含む場合があります。 xsl:decimal-format 宣言の名称は、もしあれば、その name 属性の値です。

[定義:  スタイルシートにある全ての xsl:decimal-format 宣言は、同じ名前が十進フォーマットの中にまとめられます; 存在しない名前のそれらは、単独の名前のない十進フォーマットにまとめられます。 ]

もし、スタイルシートが、名無し十進フォーマットの宣言を含まない場合には、 宣言は、存在しない属性が含まれるxsl:decimal-format 要素と同等です。

xsl:decimal-format 宣言の属性は、 format-number 関数によって続いたアルゴリズムへの入力として利用した変数の番号において値を確立します。 各属性の目的のアウトラインは、以下で与えます;しかしながら、その最も信頼のおける説明は、このアルゴリズムの説明の一部として後に与えます。

いくつかの名前付き 十進フォーマットにおいては、各属性の有効な値は、 要求した属性における厳密な値を記述する名前を持つ xsl:decimal-format 宣言から取得されます。 もし、このような宣言が存在しない場合には、属性の既定値が利用されます。 もし、このような宣言が1つ以上ある場合には、最も高い 取り込み優先度を伴うそれが利用されます。

いくつかの名無し 十進フォーマットにおいては、各属性の有効な値は、 名無しである xsl:decimal-format 宣言から取得され、そしてそれは、要求した属性における厳密な値を記述します。 もし、このような宣言が存在しない場合には、属性の既定値が利用されます。 もし、このような宣言が1つ以上ある場合には、最も高い 取り込み優先度を伴うそれが利用されます。

[ERR XTSE1290] もし、名前付き、または、名無し十進フォーマットが、 より高い取り込み優先度を伴う同じ属性のその他の定義である場合を除き、 同じ取り込み優先度を持っている異なるxsl:decimal-format 宣言にある 同じ属性における2つの衝突している値を含む場合には、それは、静的エラーです。

次に続く属性は、 format-number 関数に提供した[ picture string ]にある文字列の解釈を操作し、 そしてまた、数字のフォーマット結果に出現する場合がある文字列を記述します。 それぞれのケースでは、値は、単独の文字にしなければいけません [参照:ERR XTSE0020]

  • decimal-separator は、 decimal-separator-sign において利用した文字を明記します;既定値は、ピリオド文字( . )です

  • grouping-separator は、 grouping-sign において利用した文字を明記し、それは、特に千の単位のセパレータのように利用されます; 既定値は、カンマ文字( , )です

  • percent は、 percent-sign において利用した文字を明記します;既定値は、比率文字( % )です

  • per-mille は、 per-mille-sign において利用した文字を明記します;既定値は、 Unicode per-mille 文字(#x2030)です

  • zero-digit は、 digit-zero-sign において利用した文字を明記します;既定値は、アラビア数字のゼロ( 0 )です. この文字は、アラビア数字(Unicodeプロパティデータベースにあるカテゴリ Nd )にしなければならず、 そしてそれは、数値のゼロを持たなければいけませんこの属性は、暗黙の内に最終結果文字列にある0から9までの値をそれぞれ表すために利用されるUnicode文字を定義します: Unicode は、数値のシーケンスにある文字の続いているブロックを形成する十進アラビア数字のセットごとにそのように構成されます

[ERR XTSE1295] もし、 zero-digit 属性の中で記述した文字が、アラビア数字ではないか、または、数値ゼロを持たないアラビア数字である場合には、それは、静的エラーです。

次に続く属性は、format-number 関数に提供した[ picture string ]にある文字列の解釈を操作します。 それぞれのケースでは、その値は、単独の文字にしなければいけません [参照:ERR XTSE0020]

  • digit は、[ picture string ]にある digit-sign において利用した文字を明記します; 既定値は、数字サイン文字( # )です

  • pattern-separator は、 pattern-separator-sign において利用した文字を明記し、 それは、[ picture string ]にある正と負のサブピクチャーを分割します; 既定値は、セミコロン文字( ; )です

次に続く属性は、文字列、または、数字フォーマット結果の中に出現する場合のある文字列を明記します:

  • infinity は、 infinity-symbol において利用した文字列を明記します;既定値は、文字列 Infinity です

  • NaN は、 NaN-symbol において利用した文字列を明記し、 それは、値 NaN (not-a-number) を表すために利用されます;既定値は、文字列 NaN です

  • minus-sign は、 minus-symbol において利用した文字を明記します;既定値は、 hyphen-minus 文字 ( - , #x2D )です。 その値は、単独の文字にしなければいけません

[ERR XTSE1300] もし、 いくつかの名前付き、または、名無し十進フォーマットにおいて、[ picture string ]の中で利用した文字列を表している変数が、 識別値をそれぞれが持たない場合には、それは、静的エラーです。 これらの変数は、 decimal-separator-signgrouping-signpercent-signper-mille-signdigit-zero-signdigit-signpattern-separator-sign です。

16.4.2 [ picture string ]を処理する

[定義:  数字のフォーマットは、[ picture string ]によって操作されます。 [ picture string ]は、変数に割り当てた文字における文字のシーケンスであり、 decimal-separator-signgrouping-signzero-digit-signdigit-signpattern-separator-sign は、アクティブ(能動)文字列として分類され、 また、他の全ての文字列( percent-signper-mille-sign を含む)は、パッシブ(受動)文字列として分類されます。 ]

※翻訳注記:[ picture string ]/ピクチャ文字・映像文字:数値の整数部の桁区切りカンマや小数点部以下を表すドットなどの象形、日付フォーマットで利用される様々な数字以外の表示形式や外観の装飾文字...etc.1つ1つの表現・形式を伴う数値を含めた1つ1つの象形全体(sub-picture)という表現の全体像・全体イメージ)と解釈しています。

sub-picture の integer part は、もし、1つあれば、または、他方で sub-picture がそっくり揃っている場合には、 decimal-separator-sign の左に現れる部分として定義されます。 sub-picture の fractional part は、もし、それが1つあれば、他方でゼロの長さの文字列である場合には、 decimal-separator-sign の右に現れる部分として定義されます。

※翻訳注記:[ sub-picture ]/サブピクチャ・副映像文字:ピクチャ文字の概念にある1つ1つの表現・形式を伴う数値を含めた1つ1つの象形全体と解釈しています。

[ERR XTDE1310] [ picture string ]は、次に続く規則と一致しなければいけません。 もし、[ picture string ]が、これらの規則を満たしていない場合には、それは、回復されない動的エラーです。

これらの規則における注記としては、語句[ preceded ](先行した)と[ followed ](次に続いた)は、文字列内のどこかにある文字列を参照するのであって、 それらが、[ immediately preceded ](すぐ前に先行した)と[ immediately followed ](すぐ後に続いた)ものとして読み込まれるという事ではありません。

  • [ picture-string ]は、[ sub-picture ]、または、 pattern-separator-sign によって分割した2つの [ sub-picture ]のいずれかで構成されます。 [ picture-string ]は、 pattern-separator-sign を1つ以上含んではいけません。 もし、[ picture-string ]が、2つの[ sub-picture ]を含む場合には、最初の([ sub-picture ])は、正の値において利用され、2つめは、負の値において利用されます。

  • [ sub-picture ]は、 decimal-separator-sign を1つ以上含んではいけません

  • [ sub-picture ]は、 percent-sign 、または、per-mille-sign を1つ以上含んではならず、 また、それは、それぞれ1つずつ含んではいけません

  • [ sub-picture ]は、 digit-sign 、または、 zero-digit-sign を少なくとも1つ含まなければいけません

  • [ sub-picture ]は、アクティブ文字によって先行されるパッシブ文字を含んではならず、また、それは、その他のアクティブ文字によって続けられるパッシブ文字を含んではいけません

  • [ sub-picture ]は、 decimal-separator-sign と隣り合う grouping-separator-sign を含んではいけません

  • [ sub-picture ]の整数部分は、 digit-sign によって続けられる zero-digit-sign を含んではいけません。 [ sub-picture ]の端数部分は、 zero-digit-sign によって続けられる digit-sign を含んではいけません

format-number 関数の評価は、以下の解析フェーズ、フォーマット化フェーズという2つのフェーズで記述されます。 解析フェーズは、その入力として[ picture string ]と相関する xsl:decimal-format 宣言から得る変数を受け取り、 そして、定義した値を伴う変数の数字をその出力として生成します。 フォーマット化フェーズは、その入力としてフォーマットされる為の数字と解析フェーズによって生成した変数を受け取り、 そして、その出力として数字としてフォーマットした表現を含んでいる文字列を生成します。

注釈:

数字は、常に左にある最も重要なアラビア数字を伴ってフォーマットされます。

16.4.3 [ picture string ]を解析する

アルゴリズムのこのフェーズは、[ picture string ]xsl:decimal-format 宣言を設定するすぐ後に続くフォーマット化フェーズで利用される様々な変数の値の設定の効果を持つ属性を解析します。 これらの変数は、以下に列挙されます。 それぞれは、その初期設定とそのデータタイプを伴って示されます。

いくつかの変数は、各[ sub-picture ]を伴って結び付けられます。 もし、2つの[ sub-picture ]がある場合には、これらの規則は、正の数字に適用する値を含む事が一方の[ sub-picture ]に適用され、他方には、負の数字を含む事を適用する値を含む事が適用されます。 もし、[ sub-picture ]が1つだけある場合には、両方のケースにおける値は、この[ sub-picture ]から得られます。

変数は、次に続くようになります:

  • integer-part-grouping-positions は、[ sub-picture ]の整数部の中でセパレータをグループ化する位置を示している整数のシーケンスです。 [ sub-picture ]の整数部内に現れる各 grouping-separator-sign においては、このシーケンスは、[ sub-picture ]の整数部と grouping-separator-sign の右側の整数部に現れる digit-signzero-digit-sign 文字列の合計と等しい整数を含みます。 付記すると、もし、これらの integer-part-grouping-positions が、規則正しい間隔にある場合には、 シーケンスは、最大の取り得る数字を格納する必要がある限りにおいては、 N の多様な整数を全て含みます。 (それは、もし、それらが、いくつかの整数値 N において、シーケンス N2N3N, ... と形成する場合には、 リストにある数字が1つだけあるケースを含むという事です。)

  • minimum-integer-part-size は、 decimal-separator-sign の左に現れるであろうアラビア数字の最小値を示している整数です。 それは、普通、[ sub-picture ]の整数部に見つかる zero-digit-sign 文字の数字を設定します。 しかし、もし、その[ sub-picture ]が、存在しない zero-digit-sign と存在しない decimal-separator-sign を含む場合には、それは、1に設定されます。

    注釈:

    存在しない最大整数部サイズがあります。数字の整数部にある主なアラビア数字の全ては、[ sub-picture ]にある digit-signzero-digit-sign 文字列の数字を超過した場合でさえ、表示されるでしょう。

  • prefix は、最も左側にあるアクティブ文字の左に[ sub-picture ]にあるパッシブ文字列全てが設定されます。 もし、その[ picture string ]が、1つだけ[ sub-picture ]を含む場合には、 負の[ sub-picture ]における prefixは、 その命令の中にある minus-sign 文字と(もし、あれば)正の[ sub-picture ]における prefix を結合する事によって設定されます。

  • fractional-part-grouping-positions は、[ sub-picture ]の端数部分にあるセパレータをグループ化している位置を示している整数のシーケンスです。 [ sub-picture ]の端数部分に現れる、各 grouping-separator-sign においては、このシーケンスは、 digit-sign の合計と [ sub-picture ]の端数部分と grouping-separator-sign の左に現れる zero-digit-sign 文字列と等しくなる整数を含みます。

  • minimum-fractional-part-size は、[ sub-picture ]の端数部分で見つかる zero-digit-sign の数字に設定されます。

  • maximum-fractional-part-size は、[ sub-picture ]の端数部分で見つかる digit-signzero-digit-sign の合計値に設定されます。

  • suffix は、[ sub-picture ]の端数部分にある最も右側のアクティブ文字の右に全てのパッシブ文字列を含むために設定されます。

注釈:

もし、[ sub-picture ]が1つだけある場合には、正の数字と負の数字における全ての変数は、 prefix における場合を除き、同じになります。: 負の数字における前置詞は、 minus-sign 文字によって先行されるでしょう。

16.4.4 数字をフォーマットする

このセクションは、 format-number 関数のプロセスの2番目のフェーズを記述します。 このフェーズは、( 入力数字 として参照される)フォーマットされる数字を入力として受け取り、上で記述したように、 変数は、 xsl:decimal-format 宣言と[ picture string ]を解析する事によって組み立てられます。 このフェーズの結果は文字列であり、形式は、 format-number 関数の値を返します。

プロセスの2番目のステージにおけるアルゴリズムは、次に続くようになります:

  1. もし、入力数字が、 NaN (not a number・数字でない)場合には、その結果は、(存在しない prefix 、または、 suffix を伴う) NaN-symbol を記述したものです。

  2. 以下の規則では、その正の[ sub-picture ]とその結び付けた変数は、もし、入力数字が正で、負の[ sub-picture ]とその結び付けた変数が、他の方法で利用される場合には、利用されます。 負のゼロは、負として受け取られ、正のゼロは、正として受け取られます。

  3. もし、入力数字が正、または、負の無限大であれば、その結果は、妥当な prefixinfinity-symbol 、妥当な suffix を結合したものです。

  4. もし、[ sub-picture ]が、 percent-sign を含む場合には、数字は100まで増加されます。 もし、[ sub-picture ]が、 per-mille-sign を含む場合には、数字は、1000まで増加されます。 その結果となる数字は、 adjusted number (調整した値)として参照されます。

  5. adjusted number は、 totalDigits 、または、 fractionDigits ファセット上に存在しない制限を課す xs:decimal の手法を利用して(もし、必要なら) xs:decimal 値に変換されます。 もし、 adjusted number と等しい数値であるこのようないくつかの値がある場合には、 (もし、その adjusted number が、 xs:double 、または、 xs:float である場合には、その比較が、 xs:double 、または、 xs:float に戻る十進値を変換する事によって行われるであろう事を心に留め)、 選択の1つは、(重要か重要でないかどうかは別として)先導している、または、後ろに続いているゼロの連続をカウントしないアラビア数字の取り得る最小値を伴って1にするべきです。 例えば、1.0 は、 0.9999999999 より好まれ、また、 100000000 は、 100000001 より好まれます。 この値は、その時、その端数部分にある maximum-fractional-part-size 値以上存在しない利用をそのように丸めます。 rounded number は、上で記述したように、 adjusted numberxs:decimal 値に変換した結果になると定義され、その時、呼んでいる 第一引数として変換した数字、第二引数として maximum-fractional-part-size を伴う関数 round-half-to-evenFO は、 結果の中にある totalDigits 、または、 fractionDigits 上に存在しない制限を再び伴います。

  6. rounded number の絶対値は、十進値10を示すために、 zero-digit-sign の選択によって含んだ文字列と整数部と端数部を分割する為の decimal-separator-sign を利用して重要でない先行するまたは、後続するゼロの連続を伴う十進表記にある文字列に変換されます。 (値ゼロは、それ自身上の decimal-separator-sign によってこの段階で示されるでしょう。 )

  7. もし、 decimal-separator-sign の左にアラビア数字の数値がある場合は、そのサイズに詰め込んで(pad out)追加される minimum-integer-part-size 、 先行している zero-digit-sign 文字列よりも小さくなります。

  8. もし、 decimal-separator-sign の右側にアラビア数字の数値がある場合は、そのサイズに詰め込んで(pad out)追加される minimum-fractional-part-size、 後続している zero-digit-sign 文字列よりも小さくなります。

  9. integer-part-grouping-positions リストにあるそれぞれの整数 N においては、 grouping-separator-sign 文字は、 もし、このようなアラビア数字がある場合には、それと decimal-separator-sign の間にあるアラビア数字 N を持つ数字の整数部に現れるアラビア数字の直後の文字列に挿入されます。

  10. fractional-part-grouping-positions リストにあるそれぞれの整数 N においては、 grouping-separator-sign 文字は、 もし、このようなアラビア数字がある場合には、それと decimal-separator-sign の間にあるアラビア数字 N を持つ数字の端数部に現れるアラビア数字の直前の文字列に挿入されます。

  11. もし、[ sub-picture ]内に存在しない decimal-separator-sign がある場合、または、もし、文字列の中に decimal-separator-sign 文字の右側に存在しないアラビア数字がある場合には、 decimal-separator-sign 文字は、文字列から削除されます(それは、文字列中の最も右側にある文字になるでしょう)。

  12. 関数のその結果は、妥当な prefix 、上記で含んだような数字の文字列変換、妥当な suffix を結合したものです。

16.5 日付時刻をフォーマットする

3つの関数は、選択した暦(カレンダー)、言語そして国の慣習を利用している文字列として日付と時刻を示すために提供されます。 それぞれは、2つの変数を持ちます。

format-dateTime( $value  as xs:dateTime?,
$picture  as xs:string,
$language  as xs:string?,
$calendar  as xs:string?,
$country  as xs:string?) as xs:string?
format-dateTime($value  as xs:dateTime?,$picture as xs:string) as xs:string?
format-date( $value  as xs:date?,
$picture  as xs:string,
$language  as xs:string?,
$calendar  as xs:string?,
$country  as xs:string?) as xs:string?
format-date($value as xs:date?$picture as xs:string) as xs:string?
format-time( $value  as xs:time?,
$picture  as xs:string,
$language  as xs:string?,
$calendar  as xs:string?,
$country  as xs:string?) as xs:string?
format-time($value as xs:time?,$picture as xs:string) as xs:string?

format-dateTimeformat-dateformat-time 関数は、 $picture 引数によって記述した[ picture string ]、 $calendar 引数によって記述した暦(カレンダー)、 $language 引数によって記述した言語、 $country 引数によって記述した国を利用して文字列として $value をフォーマットします。 関数の結果は、提供した dateTimedate 、または、 time 値として示す文字列がフォーマットされます。

[定義:  3つの関数 format-dateformat-timeformat-dateTime は、共通日付フォーマット関数として参照されます。 ]

もし、 $value が、カラのシーケンスである場合には、そのカラのシーケンスが返されます。

3つの関数で構成するそれぞれの2つの引数形式を呼ぶ事は、カラのシーケンスを設定する最後の3つの引数のそれぞれを伴った5つの引数形式を呼ぶことと同様です。

languagecalendarcountry 引数の詳細については、16.5.2 言語、暦(カレンダー)、国引数参照。

一般には、妥当でない picturelanguagecalendar 、または、 country 引数の利用は、 回復されない動的エラーとして分類されます。 対照的に、妥当だけれどもエラーではない手法によってサポートされないこれらの引数は、また、フォールバック(縮退)表現にある値を出力する事を要求される手法のケースにおけるこれらの引数は、いくつかのオプションとして利用します。

16.5.1 [ picture string ]

ピクチャは、変数マーカーのシーケンスとリテラル部分文字列で構成されます。 部分文字列は、変数マーカーとして解釈される角カッコに囲まれます; 部分文字列は、リテラル部分文字列として取得される角カッコには囲まれません。 付加的に、また、もし未変更のまま存在するリテラル部分文字列がある場合には、いくつかのホワイトスペースを含んでいます。 もし、開始、または、終了角カッコが、リテラル部分文字列内に要求される場合には、それは、二重にしなければいけません。 変数マーカーは、フォーマットされる為の日付と時刻、または日付または時刻の外観を示している文字列によって結果の中で置き換えられます。 これらは、以下の詳細で記述されます。

変数マーカーは、1つまたは2つの表示修飾と付加的な幅修飾、または表示修飾または付加的な幅修飾によって付加的に続いたコンポーネント仕様で構成されます。 変数マーカーにあるホワイトスペースは、無視されます。

その コンポーネント仕様 は、要求される日付、または、時間のコンポーネントを表示し、次に続く値を受け取ります:

仕様 意味 既定表示修飾
Y 西暦年 (絶対値) 1
M 年の月 1
D 月の日 1
d 年の日 1
F 週の曜日 n
W 年の週 1
w 月の週 1
H 1日(24時間)の時間 1
h 半日(12時間)の時間 1
P (午前/午後、am/pm )マーカー n
m 時間の分 01
s 分の秒 01
f 端数の秒[fractional seconds] 1
Z UTCタイムオフセットとしてのタイムゾーン、または、もし、アルファベットの修飾がタイムゾーンの簡易名(PST)が存在する場合 1
z GMTを利用しているタイムオフセットとしての例えば GMT+1 といったタイムゾーン 1
C calendar:名前、または、カレンダー名の略記法 n
E era:年の連番における基準の名称、例えば、一国で唯一の範囲 n

[ERR XTDE1340] もし、ピクチャのシンタックスが正しくない場合には、それは、回復されない動的エラーです。

[ERR XTDE1350] もし、ピクチャにあるコンポーネント仕様が、与えられる $value のタイプにある利用可能でないコンポーネントを参照する場合、 例えば、 もし、ピクチャが、年、月または、日コンポーネントを参照する為に format-time を提供した場合は、 それは、回復されない動的エラーです。

提供した値が存在しないタイムゾーンであるとき、タイムゾーンコンポーネントを含む事はエラーではありません。 これらの状況では、タイムゾーンコンポーネントは無視されます。

最初の 表示修飾 は、表現される為にあるコンポーネントの値においてスタイルを表示します。 その値は、(以下の)いずれかになる場合があります:

  • いくつかのフォーマットトークンは、記述した数字フォーマットを利用して数値が出力される為にあるコンポーネントの値を示している xsl:number 命令 (参照先: 12 連番・番号付け・ナンバリング)の format 文字列(例えば、 101iIwW 、または、 Ww)を許容します。 または、

  • コンポーネントの値を示しているフォーマットトークン nN 、または、 Nn は、小文字で、大文字で、または、先頭のみ大文字でそれぞれ名前によって出力される為にあります。 コンポーネントは、月、曜日、タイムゾーン、eras を(制限せずに)含む名前によって出力する事が可能です。 もし、プロセッサが、暦(カレンダー)と言語を選ぶ為に名前によってこれらのコンポーネントを出力できない場合には、[implementation-defined]フォールバック(縮退)表示を利用しなければいけません。

もし、手法が要求したフォーマットトークンの利用をサポートしていない場合には、それは、そのコンポーネントにおける既定表示修飾を利用しなければいけません

もし、 最初の表示修飾が存在する場合には、次に続くように付加的に2番目の表示修飾によって続けられる場合があります:

修飾 意味
t 伝統的なナンバリング。 これは、 xsl:number にある letter-value="traditional" として同じ意味を持ちます.
o 数字の序数形式、例えば、 8th 、または、 8o 。 数字の序数形式の実際の表示は、言語にだけ依存するわけではなく、しかしまた文法的な文脈上だけに依存するわけでもありません (例えば、いくつかの言語では、それは、ジェンダーの中で合意しなければいけません)。

注釈:

たとえフォーマットした規則が xsl:number にあるフォーマットトークンにおける規則の用語に示されるとしても、 利用したフォーマットは実際には、妥当な日付コンポーネントのナンバリングに特化される場合があります。 例えば、イタリア語では、それは利用における慣習である月の最初の日における普通の数字( primo )、そのままの日である序数値( due, tre, quattro ... )です。 プロセッサは、それゆえに存在を無視している月の日の数字、または、通常の表示修飾の欠如のこの慣行を利用する場合があります。

表示修飾が含まれるか、含まれないかに関わらず、いずれにしても幅修飾は、提供される場合があります。 これは、文字の数字、または、値の表示の中に含まれるためのアラビア数字を表示します。

幅修飾は、もし、存在する場合には、カンマを採り入れます。 それは、形式を受け取ります:

   ,  min-width ("-" max-width)?

min-width が、出力となる文字列の最小値を示している符号なし整数、または、明白な最小値が存在しない事を示している * 、 また、 max-width が、出力となる文字列の最大値を示している符号なし整数かまたは、明白な最大値が存在しない事を示している * である場合; もし、 max-width が省略される場合には、 * が仮定されます。 双方の整数が、もし、存在する場合には、ゼロよりも大きくしなければいけません

フォーマットトークンは、 001 のような先行してるゼロの連続を含み、フォーマットトークンに現れているアラビア数字の数字における最小幅と最大幅を設定します; もし、幅修飾もまた存在する場合には、幅修飾が優先権を受け取ります。

注釈:

1 のようにそれ自身に1つのアラビア数字で構成されるフォーマットトークンは、出力にあるアラビア数字の数字を制約しません。 端数のケース、特に秒では、 [f001] は、3つのアラビア数字を要求し、 [f01] は、2つのアラビア数字を要求しますが、 [f1] は、アラビア数字の[implementation-defined]数字を生成するでしょう。 もし、確実に1つのアラビア数字が要求される場合には、これは、コンポーネント仕様 [f1,1-1] を利用して獲得される事が可能です。

もし、最小幅と最大幅が、記述されていないものがある場合には、出力は、切り詰め(truncation)と不必要な挿入語句(padding)なしでコンポーネントの値を表示する為に要求されるのと同様多くの文字列を利用します: これは、値の 完全な表現・説明 として以下を参照されます。

もし、値の完全な表現が、記述した最大幅の限界を超える場合には、 プロセッサは、最大幅の中でぴったり合う最も短い取り得る値を利用する事を試みるべきです。 表示修飾が、 Nn 、または、 Nn である場合、 これは、もし、利用可能であれば、または、右切り詰めが未完成でなければ、有益な切り詰めのいずれかを利用して名前を切り詰める事によって行われます。 例えば、4文字切り詰める事を示す 4max-width に設定する事は、利用されるべきですが、中には、もし、これが有益な利用におけるものであれば、3文字切り詰めて利用する事も許容するでしょう。 (例えば、「 Tuesday 」は、「 Tues 」と、「 Friday 」は、「 Fri 」と切り詰められる事があります。) 年コンポーネントのケースでは、 max-width 設定は、(現代は4桁の西暦)年から上位の省略を要求します、例えば、もし、 max-width が、 2 に設定される場合には、2003年は、 03 のように出力されるでしょう。 端数秒のケースでは、その値は、 関数 round-half-to-even(fractional-seconds, max-width) を適用する事によるかのように記述したサイズに丸められます。 もし、存在しないメカニズムが、記述した最大幅にあるぴったり合う値を利用可能にする場合 (例えば、ローマ数字が利用される際)には、その値は、その完全な表現の中で出力されるべきです。

もし、値の完全な表現が、記述した最小幅よりも短い場合には、プロセッサは、記述した幅になるように値にパッドする(詰め物をする)べきです。 数字の十進表現においては、これは、アラビア数字文字列のセットから先行するアラビア数字ゼロによって、または、端数秒のケースにある追加しているゼロによって行われるべきです(ゼロ埋め)。 他のケースでは、それは、追加しているスペース(空白)によって行われるべきです。

16.5.2 言語、暦(カレンダー)、国(地域)引数

日付フォーマット関数でサポートされる言語、暦(カレンダー)、国(地域)のセットは、 implementation-definedです。 これらの引数のいくつかが省略される場合、または、カラのシーケンスである場合、implementation-defined既定値が利用されます。

もし、フォールバック(縮退)表現が、要求と異なる暦(カレンダー)を利用する場合には、その出力文字列は、 X が実際に利用した暦(カレンダー)を識別する場合には、 [Calendar: X] を伴う前置詞を置かれなければいけません。 その文字列 Calendar は、もし、利用可能であれば、要求した言語を利用してローカライズされるべきです。 もし、そのフォールバック(縮退)表現が、要求と異なる言語を利用する場合には、その出力文字列は、 Y が、実際に利用した言語を識別する場合、 [Language: Y] が前置詞として置かれるべきです。 文字列 Language は、implementation-dependent手法でローカライズされる場合があります。 もし、値固有のコンポーネントが、要求したフォーマットの中で出力できない場合には、それは、そのコンポーネントにおける既定フォーマットの中で出力するべきです。

language 引数は、その関数の結果文字列において利用される為に言語を明記します。 引数の値は、カラのシーケンス、または、 xml:lang 属性 (参照先: [XML])において妥当になるであろう値にしなければいけません。 注記としては、これは、その国(地域)にある範囲である方言の識別と同様に([ISO 3166-1]から得られる)カントリーコードを基準とするサブ言語の識別を許容します。

もし、 language 引数が省略される場合、または、カラのシーケンスに設定される場合、または、もし、それが妥当でない値に設定される場合、または、手法が認識しない値である場合、 プロセッサは、implementation-defined言語を利用します。

言語は、(以下のような構成の)ふさわしい言語独立形式を選択する為に利用されます:

名称(例えば、月の名称)
語句、または、序数として示した数字( twenty、 20th、 twentieth )
時間慣例 (0-23 vs 1-24、 0-11 vs 1-12)
週の最初の曜日、 年の最初の週

この妥当な選択はまた、 country 引数の値をアカウントの中に受け取りますが、 これは、 language 引数の一部として記述される言語、または、いくつかのサブ言語に優先される為に利用されるわけではありません。

いくつかの与えられる言語の中で利用した名称と省略形の選択は、implementation-definedです。 例えば、ある手法は、他で Jly を利用している場合でも Jul として7月を省略するかもしれません。 ドイツ語では、ある手法は、他で Sonnabend を利用している場合でも Samstag として土曜日を表現するかもしれません。 手法は、このような選択を操作する為にユーザーを許容するメカニズムを提供する場合があります

序数値が利用される場合、序数の正しい表現のセレクション(例えば、言語のジェンダー)は、 フォーマットされているコンポーネントに、そしてまた[ picture string ]にあるその文字通りの文脈に依存する場合があります

$value の中で提供した dateTimedate 、または、time 引数を明記する calendar 属性は、 記述したカレンダーにある値に変換されなければならず、また、その時、そのカレンダーの慣行を利用して文字列に変換されます。

カレンダー値は、妥当なQNameにしなければいけません。 もし、そのQNameが前置詞を持たない場合には、それは、以下で記述した指示詞を伴うカレンダーを識別します。 もし、そのQNameが前置詞を持つ場合には、そのQNameは、5.1 適格な名前で記述したように拡張QNameに拡張されます; その拡張QNameは、カレンダーを識別します;このケースにおける振る舞いは、implementation-definedです。

もし、そのカレンダー属性が省略される場合には、implementation-defined値が利用されます。

注釈:

以下に列挙した暦は、ここ100年間で利用する中で存在し、知られていたものです。 他の多くの暦は、過去に利用されていたものです。

この仕様は、[XML スキーマ Part 2]にある xs:date データタイプの値空間にマップする方法に関わらず、これらの暦のいくつかを定義しません。 日付が異なる暦を利用して保存される場合には、曖昧な表現になる場合があります。 例えば、新しい日の開始は、異なる暦の中では、同時に存在しない場合があり、また、地理的な多様性があります(例えば、日の出日の入りを基準とする等)。 日付の解釈は、それゆえにその日の時間が知られる際、その地理的な場所が知られる際には、より信頼性があります。 ある暦と他の暦の間で日付を解釈する場合には、プロセッサは、先行して取得している country 引数を伴う countrylanguage 引数(または country または language 引数)の値としてアカウントを取得する場合があります。

これらの暦のいくつかについての情報、また、それらの間の変換におけるアルゴリズムは、[暦計算]で見つけられる場合があります。

指示詞 暦(カレンダー)
AD Anno Domini (Christian Era)
AH Anno Hegirae (Muhammedan Era)
AME Mauludi Era (solar years since Mohammed's birth)
AM Anno Mundi (Jewish Calendar)
AP Anno Persici
AS Aji Saka Era (Java)
BE Buddhist Era
CB Cooch Behar Era
CE Common Era
CL Chinese Lunar Era
CS Chula Sakarat Era
EE Ethiopian Era
FE Fasli Era
ISO ISO 8601 calendar
JE Japanese Calendar
KE Khalsa Era (Sikh calendar)
KY Kali Yuga
ME Malabar Era
MS Monarchic Solar Era
NS Nepal Samwat Era
OS Old Style (Julian Calendar)
RS Rattanakosin (Bangkok) Era
SE Saka Era
SH Mohammedan Solar Era (Iran)
SS Saka Samvat
TE Tripurabda Era
VE Vikrama Era
VS Vikrama Samvat Era

上記の暦の少なくとも1つは、サポートされなければいけません。 暦がサポートされるかどうかは、implementation-definedです。

上記リスト、また、 ISO で示した中に含まれる ISO 8601 カレンダー ([ISO 8601])は、 グレゴリオ暦が示した AD にとてもよく似ていますが、いくつかの方法では異なります。 ISO暦は、人間のユーザーが判読できるのと同様に他のソフトウェアによって容易に読み込まれる事が可能な日付と時間のフォーマットを保証する事が意図されます。 ISO暦は、言語ごとの基準に基づくローカライズされる為のこれらの許容ではなく、 ISO 8601 で定義したように固有のナンバリング慣行の利用を命じます。 固有のそれでは、西暦年の日付、西暦年の週、週の曜日を識別する数値「曜日」フォーマットを提供します; ISO暦では、週の曜日は、1(月曜日)から7(日曜日)まで番号付けされ、複数の西暦年にある週「1」(第一週)は、年の最初の(木曜日に始まる年の場合)木曜日を含む(月曜から日曜までの)週です。 年、月、日、時、分、秒コンポーネントの数値は、[XML スキーマ Part 2]で定義したように日付と時間の語彙的な表現の中で利用した値と同じISO暦です。 この暦を伴う era ("E" コンポーネント)は、(負の年における)マイナス符号、または、(正の年における)ゼロの長さの文字列のいずれかです。 紀元後1年1月1日の前の日付においては、ISOとAD暦にある年数字は、他の暦から得る事によってオフになります:
ISO 年 0000 は、 1 BC (紀元前1年)、 -0001 は、 2 BC (紀元前2年)等。

注釈:

XMLスキーマで定義したように、日付と時刻データタイプの値空間は、時間軸の絶対位置を基準にします。 これらのデータタイプの語彙的な空間は、グレゴリオ暦 時日前記([proleptic]:年代・月日を実際より前につけること)を利用して時間軸にあるこれらの絶対位置としての表現、過去と未来を推定する近代西洋暦を定義します; しかし、値空間は、暦に対して中立(calendar-neutral)です。 日付フォーマット関数は、この絶対位置の表現を生成しますが、利用可能な異なる暦の中で示されます。 その為、例えば、XMLスキーマ内にある語彙的な表現である日付は、 1 January 1502 として旧様式(Julian)暦を利用してフォーマットされる場合がある 1502-01-11 (Pope Gregory XIII(ポープ・グレゴリー8世)が生まれた日) です。 これは、2つの暦間で異なる時間10日間(ten-day)であったという事実と衝突します。 それは正しくないでしょう、また、これが、同時代に存在した文書の中で保存された日付の方法が衝突する場合でさえ、 1502-01-01 としてタイプ xs:date の要素または属性にあるこの日付を表現する為に正しくない結果を生成するでしょう。

古い時代の中で現れている年を参照する際には、 近代歴史学者は、たいてい存在しないゼロという年においてナンバリングシステムを利用します( 1 CE の前の年は、 1 BCE のように). これは、要求した暦が OS (Julian)、または、 AD (Gregorian)である場合に利用されるべき慣例です。 要求した暦が ISOである場合には、しかしながら、 ISO 8601 の慣例は、次に続くように +0001 の前の年がある場合は、ゼロと番号付けすべきです。 [XML スキーマ Part 2] (version 1.0) では、 xs:datexs:dateTime における値空間は、ゼロという年を含みません: しかしながら、次期エディションは、 ISO 8601 慣例を推奨する事が期待されます。 これが意味するところは、 ユリウス・カエサル(Julius Caesar)が暗殺された日付は、 -0043-03-13 という ISO 8601 の語彙的な表現を持ちますが、 ユリウス・カエサル暦(OS)では、 15 March 44 BCE または、グレゴリオ暦(AD)では、 13 March 44 BCE としてフォーマットされるでしょう (月と eras の名称の選んだローカリゼーションに依存します)。

意図した country 引数の利用は、実行した、または実行するであろう $value 引数の中で提供した dateTimedate 、または、 time によって表現したきっかけとなる場所を識別する為にあります。 もし、その値が提供される場合、そして、カラのシーケンスではない場合には、それは、[ISO 3166-1]で定義したカントリーコードにすべきです。 手法はまた、 ISO 3166-2 から得られる国(地域)の区分を表現しているコードの利用、または、 ISO 3166-3 の地域の名称を利用した公式に表現しているコードからの利用を許容する場合があります。 これは、フォーマットされている日付、または、時刻におけるユーザーの場所を識別する事を意図するものではなく、 language 属性という意味で行われるべきです。 この情報は、暦間における日付を変換する際に、または、フォーマットされる為にある日付と時刻の個々のコンポーネントを決定している方法において、付加的な情報を提供する為に利用される場合があります。 例えば、旧様式(Julian)暦を利用して異なる日における新しい年を開始した異なる国(地域)、暦の可変を利用したいくつかの国(地域)は、年をまたいで算出している中にある相違という結果として同期外(同期していません)でした。 カントリーコードによって識別した地理的なエリアは、フォーマットされる為の日付における時間軸に存在したものとしての境界によって、または、次期(エディション)にある日付における表示日付境界によって定義されます。

16.5.3 日付と時刻フォーマット例
例:グレゴリオ暦

次に続く例は、それらがフォーマットされるであろう方法で日付と時刻のセレクションを示します。 これらの例は、既定の暦としてグレゴリオ暦を利用するものとします。

要求出力
2002-12-31 format-date($d, "[Y0001]-[M01]-[D01]")
12-31-2002 format-date($d, "[M]-[D]-[Y]")
31-12-2002 format-date($d, "[D]-[M]-[Y]")
31 XII 2002 format-date($d, "[D1] [MI] [Y]")
31st December, 2002 format-date($d, "[D1o] [MNn], [Y]", "en", (), ())
31 DEC 2002 format-date($d, "[D01] [MN,*-3] [Y0001]", "en", (), ())
December 31, 2002 format-date($d, "[MNn] [D], [Y]", "en", (), ())
31 Dezember, 2002 format-date($d, "[D] [MNn], [Y]", "de", (), ())
Tisdag 31 December 2002 format-date($d, "[FNn] [D] [MNn] [Y]", "sv", (), ())
[2002-12-31] format-date($d, "[[[Y0001]-[M01]-[D01]]]")
Two Thousand and Three format-date($d, "[YWw]", "en", (), ())
einunddreisigste Dezember format-date($d, "[Dwo] [MNn]", "de", (), ())
3:58 PM format-time($t, "[h]:[m01] [PN]", "en", (), ())
3:58:45 pm format-time($t, "[h]:[m01]:[s01] [Pn]", "en", (), ())
3:58:45 PM PDT format-time($t, "[h]:[m01]:[s01] [PN] [ZN,*-3]", "en", (), ())
3:58:45 o'clock PM PDT format-time($t, "[h]:[m01]:[s01] o'clock [PN] [ZN,*-3]", "en")
15:58 format-time($t,"[H01]:[m01]")
15:58:45.762 format-time($t,"[H01]:[m01]:[s01].[f001]")
15:58:45 GMT+02:00 format-time($t,"[H01]:[m01]:[s01] [z]", "en", (), ())
15.58 Uhr GMT+02:00 format-time($t,"[H01]:[m01] Uhr [z]", "de", (), ())
3.58pm on Tuesday, 31st December format-dateTime($dt, "[h].[m01][Pn] on [FNn], [D1o] [MNn]")
12/31/2002 at 15:58:45 format-dateTime($dt, "[M01]/[D01]/[Y0001] at [H01]:[m01]:[s01]")

 

例:非グレゴリオ暦

次に続く例は、グレゴリオ暦ではない暦を利用します。

これらの例は、システム構成に依存して、すべてのブラウザで正しく表示されないかもしれない非ラテン文字列を利用します。

説明 要求 結果
Islamic format-date($d, "[D&#x0661;] [Mn] [Y&#x0661;]", "Islamic"、 "ar"、 "AH"、 ()) ?? ????? ????
Jewish (with Western numbering) format-date($d、 "[D] [Mn] [Y]"、 "he"、 "AM"、 ()) ?26 ??? 5763
Jewish (with traditional numbering) format-date($d, "[D&#x05D0;t] [Mn] [Y&#x05D0;t]"、 "he", "AM"、 ()) ??? ??? ?????
Julian (Old Style) format-date($d、 "[D] [MNn] [Y]"、 "en"、 "OS"、 ()) 18 December 2002
Thai format-date($d, "[D&#x0E51;] [Mn] [Y&#x0E51;]"、 "th", "BE"、 ()) ?? ??????? ????

16.6 多岐にわたる追加関数

16.6.1 カレント関数
current() as item()

XPath の中で利用した current 関数は、 XSLT スタイルシートから実行された式のある位置にあった文脈アイテムであるアイテムを返します。 これは、カレントアイテムとして参照されます。 もっとも外側にある式 (他の式の中に現れていない式)においては、そのカレントアイテムは、常に文脈アイテムと同じです。 このように(以下のように)、

<xsl:value-of select="current()"/>

(上と下)は、同じ意味です

<xsl:value-of select="."/>

しかしながら、角カッコ内で、または、 / 演算子の右側において、そのカレントアイテムは、概して文脈アイテムとは異なるものです。

例: current 関数を利用する

例えば、

<xsl:apply-templates select="//glossary/entry[@name=current()/@ref]"/>

は、カレントアイテムの ref 属性の値と等しい値を伴う name 属性を持つ glossary 親要素を持つ全ての entry 要素を処理するでしょう。 これは、(以下とは)異なります

<xsl:apply-templates select="//glossary/entry[@name=./@ref]"/>

(上と下は)同じ意味です

<xsl:apply-templates select="//glossary/entry[@name=@ref]"/>

また、その為、同じ値を伴う name 属性 と ref 属性を持つ glossary 親要素を持つ全ての entry 要素を処理するでしょう。

もし、 current 関数が、パターン内で利用される場合には、 その値は、そのパターンに対してマッチされているノードです。

[ERR XTDE1360] もし、 current 関数が、文脈アイテムが未定義である際に評価される式の中で評価される場合には、 回復されない動的エラーが現れます。

16.6.2 unparsed-entity-uri
unparsed-entity-uri($entity-name as xs:string) as xs:anyURI

unparsed-entity-uri 関数は、文脈ノードを含んでいる文書にある $entity-name 引数の値によって与える名前である解析されない実体のURIを返します。 もし、このような存在しない実体がある場合には、それは、ゼロの長さの xs:anyURI を返します。 この関数は、[データモデル]で定義した dm:unparsed-entity-system-id accessor をマップします。

[ERR XTDE1370] もし、 unparsed-entity-uri 関数が、存在しない文脈ノードがある際に または、ツリーのルートが文書ノードでない文脈ノードを含んでいる際に呼ばれる場合には、それは、回復されない動的エラーです。

16.6.3 unparsed-entity-public-id
unparsed-entity-public-id( $entity-name as xs:string) as xs:string

unparsed-entity-public-id 関数は、文脈ノードを含んでいる文書にある $entity-name 引数の値によって与える名前である解析されない実体のパブリック識別子を返します。 それは、もし、このような存在しない実体がある場合、または、もし、実体が、存在しないパブリック識別子を持つ場合には、ゼロの長さの文字列を返します。 この関数は、[データモデル]で定義した dm:unparsed-entity-public-id accessor をマップします。

[ERR XTDE1380] もし、 unparsed-entity-public-id 関数が、存在しない文脈ノードがある際に、または、 ツリーのルートが、文書ノードではない文脈ノードを含んでいる場合には、それは、回復されない動的エラーです。

16.6.4 generate-id
generate-id() as xs:string
generate-id($node as node()?) as xs:string

generate-id 関数は、与えられるノードを一意に識別する文字列を返します。 一意の識別子は、ASCII英数字で構成されなければならず、また、アルファベット文字を伴って始まらなければいけません。 このように、文字列は、統語的なXML名です。 手法が、同じノードにおける同じ識別子を常に生成し、常に異なるノードから生成される異なるその識別子を提供したいくつかの有益な方法にある識別子を生成する事は自由です。 手法は、文書が変換される時点ごとに同じ識別子を生成するという存在しない義務の下にあります。 一意の識別子を生成したという存在しない保証は、ソース文書の中で記述したいくつかの一意のIDとは違うでしょう。 もし、その引数がカラのシーケンスである場合には、その結果は、ゼロの長さの文字列です。 もし、その引数が省略される場合には、それは、文脈ノードにおける既定です。

16.6.5 system-property
system-property($property-name as xs:string) as xs:string

$property-name 引数は、語彙的なQNameを評価しなければいけません語彙的なQNameは、5.1 適格な名前で記述したように拡張されます。

[ERR XTDE1390] もし、その値が妥当なQNameではない場合、または、もし、QNameの前置詞におけるスコープにある存在しない名前空間宣言がある場合には、それは、回復されない動的エラーです。 もし、プロセッサが、静的なエラーを回避する事を可能とする場合(例えば、引数が文字列リテラルとして提供される際)には、 プロセッサは、静的エラーとしてこれを付加的にシグナル出力する場合があります

system-property 関数は、名前によって識別したシステムプロパティの値を示している文字列を返します。 もし、存在しないこのようなシステムプロパティがある場合には、ゼロの長さの文字列返されます。

手法は、次に続くXSLT 名前空間にある全てのシステムプロパティを提供しなければいけません

  • xsl:version は、プロセッサによって提供されるXSLTの与えられているバージョン番号です; この文書によって記述したXSLTのバージョンと一致する手法においては、これは、文字列 "2.0"です。 その値は、常にXMLスキーマ (参照先: [XML スキーマ Part 2])で定義した十進データタイプの語彙的な空間にある文字列となるでしょう。 これは、等級比較の目的において数字に変換される為の値を許容します。

  • xsl:vendor は、プロセッサの手法・道具を識別する文字列です

  • xsl:vendor-url は、プロセッサの手法・道具を識別するURLを含む文字列です; 具体的に言うとこれは、手法・道具のウェブサイトのホストページ(ホームページ)です。

  • xsl:product-name は、手法・道具によって定義したように手法の名前を含む文字列です。 これは、普通、次の製品のリリースから均一にそのまま(の名称)にすべきです。 それは、ソースコードが、多様な実行プラットフォームにおいて互換製品を製作する為に利用されるというケースでもまた、プラットフォームを超えて均一にすべきです。

  • xsl:product-version は、手法・道具によって定義したように手法のバージョンを識別する文字列です。 これは、普通、次の製品のリリースから多様になるべきであり、そして、手法の自由裁量で異なる実行プラットフォームを超えて多様になる場合もあります

  • xsl:is-schema-aware は、スキーマ用XSLTプロセッサとの一致を要求するプロセッサのケースでは "yes" 、 または、基本XSLTプロセッサのケースにおいては "no" という文字列を返します。

  • xsl:supports-serialization は、 シリアライゼーション特性を提供するプロセッサのケースでは "yes" 、または、それ以外は "no" という文字列を返します。

  • xsl:supports-backwards-compatibility は、 後方互換性特性を提供するプロセッサのケースでは "yes" 、または、それ以外は "no" という文字列を返します。

プロセッサによって提供される一致レベルと特性に関連するこれらのプロパティのいくつか: これらのオプションは、21 一致で記述されます。

上記プロパティにおいて返した実際の値は、implementation-definedです。

サポートされるシステムプロパティのセットは、上記で列挙したそれらの追加については、implementation-definedです。 手法は、XSLT名前空間にある付加的なシステムプロパティを定義してはいけません

注釈:

手法は、XSLT 2.0 と一致する場合を除き、 xsl:version システムプロパティの値として値 2.0 を返してはいけません。

XSLT 1.0 プロセッサを強化しているベンダーとして認知されているベンダーは、提供されるこの仕様の全ての命令特性以前に手法を暫時リリースしたい場合があります。 XSLT 2.0と一致しないこのような製品があるために、この仕様は、それらの振る舞いを定義する事ができません。 しかしながら、このような製品の手法は、 1.0 と 2.0 の間に前後している xsl:version システムプロパティにおける値を返す事、また、 element-available を提供する事と、提供される全てを持つ特性をテストするユーザーを許容する為の function-available 関数が奨励されます。

17. メッセージ / Messages >>


ウェブ造ホーム前へ次へ