気の向くままに辿るIT/ICT/IoT
XSLT

Appendices XSLT 2.0 Extensible Stylesheet Language Transformations Version2.0

ホーム前へ次へ
XSLT 2.0とは?

Appendices XSL Extensible Stylesheet Language Transformations Version2.0

【巻末】Appendices XSLT 2.0 Extensible Stylesheet Language Transformations Version2.0

 W3C勧告XSLTバージョンXSLT 2.0の巻末

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

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

<< 21. 一致 / Conformance

【XSLT 2.0巻末】Appendices


巻末 / Appendices
A 参照 References
 A.1 標準既定参照 Normative References
 A.2 その他参照 Other References
B XSLTメディアタイプ The XSLT Media Type
 B.1 MIMEタイプ[ application/xslt+xml ]の登録 Registration of MIME Media Type application/xslt+xml
 B.2 フラグメント識別子 Fragment Identifiers
C 用語解説(非標準) Glossary (Non-Normative)
D 要素シンタクス要約(非標準) Element Syntax Summary (Non-Normative)
E エラー条件要約(非標準) Summary of Error Conditions (Non-Normative)
F 特徴定義方法チェックリスト(非標準) Checklist of Implementation-Defined Features (Non-Normative)
G XSLTスタイルシート用スキーマ(非標準) Schema for XSLT Stylesheets (Non-Normative)
H 確認・謝辞(非標準) Acknowledgements (Non-Normative)
I 要求チェックリスト(非標準) Checklist of Requirements (Non-Normative)
J XSLT 1.0からの変更点(非標準) Changes from XSLT 1.0 (Non-Normative)
 J.1 非互換・変更点 Incompatible Changes
  J.1.1 ツリー構築:ホワイトスペース除去 Tree construction: whitespace stripping
  J.1.2 シリアライズ作用の変更 Changes in Serialization Behavior
  J.1.3 後方互換性作用 Backwards Compatibility Behavior
  J.1.4 スキーマの欠如による非互換性 Incompatibility in the Absence of a Schema
  J.1.5 スキーマの存在による互換性 Compatibility in the Presence of a Schema
  J.1.6 XPath 2.0後方互換性 XPath 2.0 Backwards Compatibility
 J.2 新規追加された機能 New Functionality
  J.2.1 既に普及している変更点 Pervasive changes
  J.2.2 比較的大きな変更 Major Features
  J.2.3 比較的小さな変更 Minor Changes
  J.2.4 勧告提案からの変更点 Changes since Proposed Recommendation

A 参照・リファレンス

A.1 標準参照

データモデル
XQuery 1.0 と XPath 2.0 データモデル (XDM)は、 Norman Walsh、 Mary Fernandez、 Ashok Malhotra、 が編集者です。 World Wide Web Consortium, 23 Jan 2007. このバージョンは、 http://www.w3.org/TR/2007/REC-xpath-datamodel-20070123/です。 最新バージョン は、 http://www.w3.org/TR/xpath-datamodel/ において利用可能です。
関数と演算子
XQuery 1.0 と XPath 2.0 関数と演算子は、 Ashok Malhotra、 Jim Melton、 and Norman Walsh が編集者です。 World Wide Web Consortium, 23 Jan 2007. このバージョンは、 http://www.w3.org/TR/2007/REC-xpath-functions-20070123/です。 最新バージョン は、 http://www.w3.org/TR/xpath-functions/ において利用可能です。
XML 情報セット
XML 情報セット (Second Edition)は、 John Cowan and Richard Tobinが編集者です。 World Wide Web Consortium、 04 Feb 2004. このバージョンは、 http://www.w3.org/TR/2004/REC-xml-infoset-20040204です。 最新バージョン は、 http://www.w3.org/TR/xml-infoset において利用可能です。
ISO 3166-1
ISO (International organization for Standardization) 国・地域とそれらの一部を表すためのコード - Part 1: カントリーコード(Country codes) ISO 3166-1:1997.
ISO 8601
ISO (International organization for Standardization) Data Element and interchange formats - information interchange - Representation of dates and times. ISO 8601:2000(E)、 Second edition, 2000-12-15.
XSLT と XQuery シリアライゼーション
XSLT 2.0 と XQuery 1.0 シリアライゼーションは、 Joanne Tong、 Michael Kay、 Norman Walsh、 が編集者です。 World Wide Web Consortium, 23 Jan 2007. このバージョンは、 http://www.w3.org/TR/2007/REC-xslt-xquery-serialization-20070123/です。 最新バージョン は、 http://www.w3.org/TR/xslt-xquery-serialization/ において利用可能です。
XML 1.0
拡張可能なマークアップ言語/Extensible Markup Language (XML) 1.0 (Fourth Edition)は、 Eve Maler、 Jean Paoli、 Francois Yergeau、 が編集者です。 World Wide Web Consortium, 16 Aug 2006. このバージョンは、 http://www.w3.org/TR/2006/REC-xml-20060816 です。 最新バージョンは、 http://www.w3.org/TR/xml において利用可能です。
XML 1.1
拡張可能なマークアップ言語/Extensible Markup Language (XML) 1.1 (Second Edition)は、 Tim Bray、 John Cowan、 Jean Paoli、 が編集者です。 World Wide Web Consortium, 16 Aug 2006. このバージョンは、 http://www.w3.org/TR/2006/REC-xml11-20060816. 最新バージョン は、 http://www.w3.org/TR/xml11/ において利用可能です。
XML Base
XML Baseは、 Jonathan Marshが編集者です。 World Wide Web Consortium, 27 Jun 2001. このバージョンは、 http://www.w3.org/TR/2001/REC-xmlbase-20010627/です。 最新バージョン は、 http://www.w3.org/TR/xmlbase/ において利用可能です。
xml:id
xml:id バージョン 1.0は、 Norman Walsh、 Daniel Veillard、 Jonathan Marshが編集者です。 World Wide Web Consortium, 09 Sep 2005. このバージョンは、 http://www.w3.org/TR/2005/REC-xml-id-20050909/ です。 最新バージョン は、 http://www.w3.org/TR/xml-id/ において利用可能です。
XML 1.0内の名前空間
XML内の名前空間は、 Andrew Layman、 Dave Hollander、Tim Brayが編集者です。 World Wide Web Consortium, 14 Jan 1999. このバージョンは、 http://www.w3.org/TR/1999/REC-xml-names-19990114 です。 最新バージョン は、 http://www.w3.org/TR/REC-xml-names において利用可能です。
XML 1.1における名前空間
XML 1.1内の名前空間 (Second Edition)は、 Tim Bray、 Dave Hollander、 Andrew Layman、 and Richard Tobin が編集者です。 World Wide Web Consortium, 16 Aug 2006. このバージョンは、 http://www.w3.org/TR/2006/REC-xml-names11-20060816です。 最新バージョン は、 http://www.w3.org/TR/xml-names11/ において利用可能です。
XML スキーマ Part 1
XML スキーマ Part 1: Structures(構造) Second Editionは、 Henry S.、 Thompson、 David Beech、 Noah Mendelsohn、 Murray Maloneyが編集者です。 World Wide Web Consortium, 28 Oct 2004. このバージョンは、 http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/ です。 最新バージョン は、 http://www.w3.org/TR/xmlschema-1/ において利用可能です。
XML スキーマ Part 2
XML スキーマ Part 2: datatypes(データタイプ) Second Editionは、 Paul V. Biron and Ashok Malhotraが編集者です。 World Wide Web Consortium、 28 Oct 2004. このバージョンは、 http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/ です。 最新バージョン は、 http://www.w3.org/TR/xmlschema-2/ において利用可能です。
XPath 2.0
XMLパス言語 (XPath) 2.0は、 Don Chamberlin 、 Anders Berglund、 Scott Boag、 が編集者です。 World Wide Web Consortium, 23 Jan 2007. このバージョンは、 http://www.w3.org/TR/2007/REC-xpath20-20070123/ です。 最新バージョン は、 http://www.w3.org/TR/xpath20/ において利用可能です。

A.2 他の 参照

暦計算
Edward M. Reingold and Nachum Dershowitz. Calendrical Calculations Millennium edition (2nd Edition). Cambridge University Press, ISBN 0 521 77752 6
DOM レベル 2
Document Object Model (DOM) レベル 2 Core 仕様は、 Philippe Le Hegaret、 Steve Byrne、 Arnaud Le Hors、 が編集者です。 World Wide Web Consortium, 13 Nov 2000. このバージョンは、 http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113です。 最新バージョン は、 http://www.w3.org/TR/DOM-Level-2-Core/ において利用可能です。
RFC2119
S. Bradner. Key words for use in RFCs to Indicate Required Levels. IETF RFC 2119. 参照 http://www.ietf.org/rfc/rfc2119.txt
RFC2376
E. Whitehead、 M. Murata. XML Media Types. IETF RFC 2376. 参照 http://www.ietf.org/rfc/rfc2376.txt
RFC3023
M. Murata、 S. St.Laurent、 and D. Cohn. XML Media Types. IETF RFC 3023. 参照 http://www.ietf.org/rfc/rfc3023.txt. References to RFC 3023 should be taken to refer to any documents that supersedes RFC 3023.
RFC3986
T. Berners-Lee、 R. Fielding、 and L. Masinter. Uniform Resource Identifiers (URI): Generic Syntax. IETF RFC 3986. 参照 http://www.ietf.org/rfc/rfc3986.txt
RFC3987
M. Duerst、 M. Suignard. Internationalized Resource Identifiers (IRIs). IETF RFC 3987. 参照 http://www.ietf.org/rfc/rfc3987.txt
UNICODE TR10
Unicode Consortium. Unicode Technical Standard #10. Unicode Collation algorithm. Unicode Technical Report. 参照 http://www.unicode.org/unicode/reports/tr10/
XInclude
XML Inclusions (XInclude) バージョン 1.0 (Second Edition)は、 David、Orchard、 Jonathan Marsh、 Daniel Veillardが編集者です。 World Wide Web Consortium, 15 Nov 2006. このバージョンは、 http://www.w3.org/TR/2006/REC-xinclude-20061115/ です。 最新バージョン は、 http://www.w3.org/TR/xinclude/ において利用可能です。
XLink
XML Linking Language (XLink) バージョン 1.0は、 David、Orchard、 Eve Maler、 and Steven DeRoseが編集者です。 World Wide Web Consortium, 27 Jun 2001. このバージョンは、http://www.w3.org/TR/2001/REC-xlink-20010627/ です。 最新バージョン は、 http://www.w3.org/TR/xlink/ において利用可能です。
XML スキーマ 1.0 と XML 1.1
World Wide Web Consortium. XMLスキーマ 1.0 プロセッサを伴う XML 1.1 文書を処理する. W3C Working Group Note 11 May 2005. 参照 http://www.w3.org/TR/2005/NOTE-xml11schema10-20050511/
XML スタイルシート
Associating Style Sheets with XML Documentは、 James Clarkが編集者です。 World Wide Web Consortium, 29 Jun 1999. このバージョンは、 http://www.w3.org/1999/06/REC-xml-stylesheet-19990629です。 最新バージョン は、 http://www.w3.org/TR/xml-stylesheet において利用可能です。
XPointer フレームワーク
XPointer フレームワークは、 Paul Grosso、 Jonathan Marsh, Eve Maler、 and Norman Walshが編集者です。 World Wide Web Consortium, 25 Mar 2003. このバージョンは、 http://www.w3.org/TR/2003/REC-xptr-framework-20030325/です。 最新バージョン は、 http://www.w3.org/TR/xptr-framework/ において利用可能です。
拡張可能なスタイルシート言語 (XSL)
拡張可能な スタイルシート 言語 (XSL) バージョン 1.1は、 Anders Berglundが編集者です。 World Wide Web Consortium, 05 Dec 2006. このバージョンは、 http://www.w3.org/TR/2006/REC-xsl11-20061205/ です。 最新バージョン は、 http://www.w3.org/TR/xsl/ において利用可能です。
XSLT 1.0
XSL 変換 (XSLT) バージョン 1.0は、 James Clarkが編集者です。 World Wide Web Consortium, 16 Nov 1999. このバージョンは、 http://www.w3.org/TR/1999/REC-xslt-19991116 です。 最新バージョン は、 http://www.w3.org/TR/xslt において利用可能です。
XSLT 2.0 要求
XSLT 要求 バージョン 2.0は、 Steve Muench と Mark Scardinaが編集者です。 World Wide Web Consortium, 14 Feb 2001. このバージョンは、 http://www.w3.org/TR/2001/WD-xslt20req-20010214 です。 最新バージョン は、 http://www.w3.org/TR/xslt20req において利用可能です。

B XSLTメディアタイプ

この巻末解説は、新しいMIMEメディアタイプ "application/xslt+xml" を記載します。

この情報は、レビュー、承認、IANA (the Internet Assigned Numbers Authority)を伴う登録について IESG (Internet Engineering Steering Group) を許可しています。

B.1 MIMEメディアタイプ application/xslt+xml の登録

MIME メディアタイプ名:

application

MIME サブタイプ名:

xslt+xml

必須パラメータ:

なし。

オプションパラメータ:
charset

このパラメータは、 [RFC3023]で記述したように、 application/xml メディアタイプの charset パラメータにおける同一のセマンティクスを持ちます。

エンコード方式考察:

XMLであるXSLT コンテンツの効能によって、XMLを実行するのと同じ "application/xslt+xml" を送信した場合、同じ配慮を持ちます(同等に配慮されます)。 参照: RFC 3023、 セクション 3.2。

セキュリティ考察:

いくつかのXSLT 命令は、ポインタの指すデータを得る操作がなされる為に任意の原因となる場合があります。 このケースでは、[RFC3986]のセキュリティ課題、 セクション 7, が、熟考されるべきです。

付記すると、XSLTにおける拡張特性の為に、ここで記述したこれらによるセキュリティ結果を持つ内容を記述する場合がある "application/xslt+xml" を利用可能とします。 しかしながら、もし、プロセッサが単にこの仕様の標準セマンティクスに続く場合には、この内容は、無視されるでしょう。 付加的な内容を認識し、処理するプロセッサのケース、 または、他のプロセッサを迅速に処理される内容の異なる処理が、セキュリティ課題が潜在的に生じるであろうケースに限定します。 また、そのケースでは、それらは、この登録文書のドメイン(所在)を外に出す(fall outside)でしょう。

インターオペラビリティ考察:

この仕様は、他の事柄、認識されない要素を伴って扱う際に次に続かなければいけない振る舞いを指示する処理セマンティクスを記述します。

XSLTは拡張可能なので、整形式XMLである受け取った内容を除外する事が可能である "application/xslt+xml" プロセッサに順応しますが、 それは、妥当なXSLTである内容を保証される事が可能ではないか、または、プロセッサは、その文書にある要素と属性の全てを認識するでしょう。

公表仕様:

このメディアタイプ登録は、XSLT 2.0 仕様によって記述したようにXSLTスタイルシートモジュールについてであり、 それは、 http://www.w3.org/TR/xslt20/ に位置づけられます。 それはまた、XSLT言語の従来バージョンと最新バージョンを伴うこのメディアタイプを利用する為にふさわしいものです。

このメディアタイプを利用するアプリケーション:

存在する XSLT 1.0 スタイルシートは、ほとんど、たいていは、未登録のメディアタイプ "text/xsl" を利用して記述されます。

現在では一般にそれを認識するアプリケーションが存在しないという事実に影響している存在しない試験的な、ベンダー仕様、または、 "application/xslt+xml" の独自のツリー前身があります。 この新しいタイプは、最初のクラスXMLアプリケーションとして World Wide Web 上で XSLT 2.0 の拡張した開発において許容される為に登録されています。

追加情報:
マジックナンバー(Magic number(s)):

XSLT文書に常に存在する存在しない単独の初期オクテットシーケンスがあります。

ファイル拡張(File extension(s)):

XSLT文書は、たいてい、しばしば、拡張 ".xsl" 、または、 ".xslt"を伴って識別されます。

マッキントッシュ/Macintoshファイルタイプコード:

TEXT

更に先の情報について、コンタクトする為の個人とEmailアドレス情報:

Norman Walsh、 <Norman.Walsh@Sun.COM>

意図した慣用法:

COMMON

作者/修正者:

XSLT仕様は、 World Wide Web Consortium(ワールドワイドウェブ協会・コンソーシアム/W3C) の XSL ワーキンググループ(Working Group)の作業生産物です。 W3Cは、これらの仕様を超える変更操作を持ちます。

B.2 フラグメント識別子

"application/xslt+xml" としてラベル付けされる文書において、そのフラグメント識別子注釈は、 RFC 3023 で記述したように、 "application/xml" において正確です。

C 用語解説(非標準) Glossary (Non-Normative)

D 要素シンタックス要約 (非標準)

要素が出現する場合にスタイルシートにある文脈を伴うXSLT 要素ごとのシンタックスは、以下に要約されます。 いくつかの要素(特に、命令)は、シーケンスコンストラクタを含む事が許容されるいくつかの要素の子として許容されます。 これらの要素は(以下の通り):

  • リテラル結果要素
  • もし、そのように定義した場合、拡張命令

xsl:analyze-string

 

カテゴリ: 命令

書式・モデル:

<xsl:analyze-string
  select = expression
  regex = { string }
  flags? = { string }>
  <!-- Content: (xsl:matching-substring?, xsl:non-matching-substring?, xsl:fallback*) -->
</xsl:analyze-string>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素
  • いくつかのリテラル結果要素

xsl:apply-imports

 

カテゴリ: 命令

書式・モデル:

<xsl:apply-imports>
  <!-- Content: xsl:with-param* -->
</xsl:apply-imports>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:apply-templates

 

カテゴリ: 命令

書式・モデル:

<xsl:apply-templates
  select? = expression
  mode? = token>
  <!-- Content: (xsl:sort | xsl:with-param)* -->
</xsl:apply-templates>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:attribute

 

カテゴリ: 命令

書式・モデル:

<xsl:attribute
  name = { qname }
  namespace? = { uri-reference }
  select? = expression
  separator? = { string }
  type? = qname
  validation? = "strict" | "lax" | "preserve" | "strip">
  <!-- Content: sequence-constructor -->
</xsl:attribute>

許可した親要素:

  • xsl:attribute-set
  • 内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:attribute-set

 

カテゴリ: 宣言

書式・モデル:

<xsl:attribute-set
  name = qname
  use-attribute-sets? = qnames>
  <!-- Content: xsl:attribute* -->
</xsl:attribute-set>

許可した親要素:

  • xsl:stylesheet
  • xsl:transform

xsl:call-template

 

カテゴリ: 命令

書式・モデル:

<xsl:call-template
  name = qname>
  <!-- Content: xsl:with-param* -->
</xsl:call-template>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:character-map

 

カテゴリ: 宣言

書式・モデル:

<xsl:character-map
  name = qname
  use-character-maps? = qnames>
  <!-- Content: (xsl:output-character*) -->
</xsl:character-map>

許可した親要素:

  • xsl:stylesheet
  • xsl:transform

xsl:choose

 

カテゴリ: 命令

書式・モデル:

<xsl:choose>
  <!-- Content: (xsl:when+、 xsl:otherwise?) -->
</xsl:choose>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:comment

 

カテゴリ: 命令

書式・モデル:

<xsl:comment
  select? = expression>
  <!-- Content: sequence-constructor -->
</xsl:comment>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:copy

 

カテゴリ: 命令

書式・モデル:

<xsl:copy
  copy-namespaces? = "yes" | "no"
  inherit-namespaces? = "yes" | "no"
  use-attribute-sets? = qnames
  type? = qname
  validation? = "strict" | "lax" | "preserve" | "strip">
  <!-- Content: sequence-constructor -->
</xsl:copy>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:copy-of

 

カテゴリ: 命令

書式・モデル:

<xsl:copy-of
  select = expression
  copy-namespaces? = "yes" | "no"
  type? = qname
  validation? = "strict" | "lax" | "preserve" | "strip" />

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:decimal-format

 

カテゴリ: 宣言

書式・モデル:

<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:stylesheet
  • xsl:transform

xsl:document

 

カテゴリ: 命令

書式・モデル:

<xsl:document
  validation? = "strict" | "lax" | "preserve" | "strip"
  type? = qname>
  <!-- Content: sequence-constructor -->
</xsl:document>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:element

 

カテゴリ: 命令

書式・モデル:

<xsl:element
  name = { qname }
  namespace? = { uri-reference }
  inherit-namespaces? = "yes" | "no"
  use-attribute-sets? = qnames
  type? = qname
  validation? = "strict" | "lax" | "preserve" | "strip">
  <!-- Content: sequence-constructor -->
</xsl:element>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:fallback

 

カテゴリ: 命令

書式・モデル:

<xsl:fallback>
  <!-- Content: sequence-constructor -->
</xsl:fallback>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:for-each

 

カテゴリ: 命令

書式・モデル:

<xsl:for-each
  select = expression>
  <!-- Content: (xsl:sort*, sequence-constructor) -->
</xsl:for-each>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:for-each-group

 

カテゴリ: 命令

書式・モデル:

<xsl:for-each-group
  select = expression
  group-by? = expression
  group-adjacent? = expression
  group-starting-with? = pattern
  group-ending-with? = pattern
  collation? = { uri }>
  <!-- Content: (xsl:sort*, sequence-constructor) -->
</xsl:for-each-group>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:function

 

カテゴリ: 宣言

書式・モデル:

<xsl:function
  name = qname
  as? = sequence-type
  override? = "yes" | "no">
  <!-- Content: (xsl:param*, sequence-constructor) -->
</xsl:function>

許可した親要素:

  • xsl:stylesheet
  • xsl:transform

xsl:if

 

カテゴリ: 命令

書式・モデル:

<xsl:if
  test = expression>
  <!-- Content: sequence-constructor -->
</xsl:if>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:import

 

カテゴリ: 宣言

書式・モデル:

<xsl:import
  href = uri-reference />

許可した親要素:

  • xsl:stylesheet
  • xsl:transform

xsl:import-schema

 

カテゴリ: 宣言

書式・モデル:

<xsl:import-schema
  namespace? = uri-reference
  schema-location? = uri-reference>
  <!-- Content: xs:schema? -->
</xsl:import-schema>

許可した親要素:

  • xsl:stylesheet
  • xsl:transform

xsl:include

 

カテゴリ: 宣言

書式・モデル:

<xsl:include
  href = uri-reference />

許可した親要素:

  • xsl:stylesheet
  • xsl:transform

xsl:key

 

カテゴリ: 宣言

書式・モデル:

<xsl:key
  name = qname
  match = pattern
  use? = expression
  collation? = uri>
  <!-- Content: sequence-constructor -->
</xsl:key>

許可した親要素:

  • xsl:stylesheet
  • xsl:transform

xsl:matching-substring

 

書式・モデル:

<xsl:matching-substring>
  <!-- Content: sequence-constructor -->
</xsl:matching-substring>

許可した親要素:

  • xsl:analyze-string

xsl:message

 

カテゴリ: 命令

書式・モデル:

<xsl:message
  select? = expression
  terminate? = { "yes" | "no" }>
  <!-- Content: sequence-constructor -->
</xsl:message>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素
  • xsl:function

xsl:namespace

 

カテゴリ: 命令

書式・モデル:

<xsl:namespace
  name = { ncname }
  select? = expression>
  <!-- Content: sequence-constructor -->
</xsl:namespace>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:namespace-alias

 

カテゴリ: 宣言

書式・モデル:

<xsl:namespace-alias
  stylesheet-prefix = prefix | "#default"
  result-prefix = prefix | "#default" />

許可した親要素:

  • xsl:stylesheet
  • xsl:transform

xsl:next-match

 

カテゴリ: 命令

書式・モデル:

<xsl:next-match>
  <!-- Content: (xsl:with-param | xsl:fallback)* -->
</xsl:next-match>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:non-matching-substring

 

書式・モデル:

<xsl:non-matching-substring>
  <!-- Content: sequence-constructor -->
</xsl:non-matching-substring>

許可した親要素:

  • xsl:analyze-string

xsl:number

 

カテゴリ: 命令

書式・モデル:

<xsl:number
  value? = expression
  select? = expression
  level? = "single" | "multiple" | "any"
  count? = pattern
  from? = pattern
  format? = { string }
  lang? = { nmtoken }
  letter-value? = { "alphabetic" | "traditional" }
  ordinal? = { string }
  grouping-separator? = { char }
  grouping-size? = { number } />

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:otherwise

 

書式・モデル:

<xsl:otherwise>
  <!-- Content: sequence-constructor -->
</xsl:otherwise>

許可した親要素:

  • xsl:choose

xsl:output

 

カテゴリ: 宣言

書式・モデル:

<xsl:output
  name? = qname
  method? = "xml" | "html" | "xhtml" | "text" | qname-but-not-ncname
  byte-order-mark? = "yes" | "no"
  cdata-section-elements? = qnames
  doctype-public? = string
  doctype-system? = string
  encoding? = string
  escape-uri-attributes? = "yes" | "no"
  include-content-type? = "yes" | "no"
  indent? = "yes" | "no"
  media-type? = string
  normalization-form? = "NFC" | "NFD" | "NFKC" | "NFKD" | "fully-normalized" | "none" | nmtoken
  omit-xml-declaration? = "yes" | "no"
  standalone? = "yes" | "no" | "omit"
  undeclare-prefixes? = "yes" | "no"
  use-character-maps? = qnames
  version? = nmtoken />

許可した親要素:

  • xsl:stylesheet
  • xsl:transform

xsl:output-character

 

書式・モデル:

<xsl:output-character
  character = char
  string = string />

許可した親要素:

  • xsl:character-map

xsl:param

 

カテゴリ: 宣言

書式・モデル:

<xsl:param
  name = qname
  select? = expression
  as? = sequence-type
  required? = "yes" | "no"
  tunnel? = "yes" | "no">
  <!-- Content: sequence-constructor -->
</xsl:param>

許可した親要素:

  • xsl:stylesheet
  • xsl:transform
  • xsl:function
  • xsl:template

xsl:perform-sort

 

カテゴリ: 命令

書式・モデル:

<xsl:perform-sort
  select? = expression>
  <!-- Content: (xsl:sort+, sequence-constructor) -->
</xsl:perform-sort>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:preserve-space

 

カテゴリ: 宣言

書式・モデル:

<xsl:preserve-space
  elements = tokens />

許可した親要素:

  • xsl:stylesheet
  • xsl:transform

xsl:processing-instruction

 

カテゴリ: 命令

書式・モデル:

<xsl:processing-instruction
  name = { ncname }
  select? = expression>
  <!-- Content: sequence-constructor -->
</xsl:processing-instruction>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:result-document

 

カテゴリ: 命令

書式・モデル:

<xsl:result-document
  format? = { qname }
  href? = { uri-reference }
  validation? = "strict" | "lax" | "preserve" | "strip"
  type? = qname
  method? = { "xml" | "html" | "xhtml" | "text" | qname-but-not-ncname }
  byte-order-mark? = { "yes" | "no" }
  cdata-section-elements? = { qnames }
  doctype-public? = { string }
  doctype-system? = { string }
  encoding? = { string }
  escape-uri-attributes? = { "yes" | "no" }
  include-content-type? = { "yes" | "no" }
  indent? = { "yes" | "no" }
  media-type? = { string }
  normalization-form? = { "NFC" | "NFD" | "NFKC" | "NFKD" | "fully-normalized" | "none" | nmtoken }
  omit-xml-declaration? = { "yes" | "no" }
  standalone? = { "yes" | "no" | "omit" }
  undeclare-prefixes? = { "yes" | "no" }
  use-character-maps? = qnames
  output-version? = { nmtoken }>
  <!-- Content: sequence-constructor -->
</xsl:result-document>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:sequence

 

カテゴリ: 命令

書式・モデル:

<xsl:sequence
  select = expression>
  <!-- Content: xsl:fallback* -->
</xsl:sequence>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:sort

 

書式・モデル:

<xsl:sort
  select? = expression
  lang? = { nmtoken }
  order? = { "ascending" | "descending" }
  collation? = { uri }
  stable? = { "yes" | "no" }
  case-order? = { "upper-first" | "lower-first" }
  data-type? = { "text" | "number" | qname-but-not-ncname }>
  <!-- Content: sequence-constructor -->
</xsl:sort>

許可した親要素:

  • xsl:apply-templates
  • xsl:for-each
  • xsl:for-each-group
  • xsl:perform-sort

xsl:strip-space

 

カテゴリ: 宣言

書式・モデル:

<xsl:strip-space
  elements = tokens />

許可した親要素:

  • xsl:stylesheet
  • xsl:transform

xsl:stylesheet

 

書式・モデル:

<xsl:stylesheet
  id? = id
  extension-element-prefixes? = tokens
  exclude-result-prefixes? = tokens
  version = number
  xpath-default-namespace? = uri
  default-validation? = "preserve" | "strip"
  default-collation? = uri-list
  input-type-annotations? = "preserve" | "strip" | "unspecified">
  <!-- Content: (xsl:import*, other-declarations) -->
</xsl:stylesheet>

許可した親要素:

  • なし

xsl:template

 

カテゴリ: 宣言

書式・モデル:

<xsl:template
  match? = pattern
  name? = qname
  priority? = number
  mode? = tokens
  as? = sequence-type>
  <!-- Content: (xsl:param*, sequence-constructor) -->
</xsl:template>

許可した親要素:

  • xsl:stylesheet
  • xsl:transform

xsl:text

 

カテゴリ: 命令

書式・モデル:

<xsl:text
  [disable-output-escaping]? = "yes" | "no">
  <!-- Content: #PCDATA -->
</xsl:text>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:transform

 

書式・モデル:

<xsl:transform
  id? = id
  extension-element-prefixes? = tokens
  exclude-result-prefixes? = tokens
  version = number
  xpath-default-namespace? = uri
  default-validation? = "preserve" | "strip"
  default-collation? = uri-list
  input-type-annotations? = "preserve" | "strip" | "unspecified">
  <!-- Content: (xsl:import*, other-declarations) -->
</xsl:transform>

許可した親要素:

  • なし

xsl:value-of

 

カテゴリ: 命令

書式・モデル:

<xsl:value-of
  select? = expression
  separator? = { string }
  [disable-output-escaping]? = "yes" | "no">
  <!-- Content: sequence-constructor -->
</xsl:value-of>

許可した親要素:

    内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:variable

 

カテゴリ: 宣言 命令

書式・モデル:

<xsl:variable
  name = qname
  select? = expression
  as? = sequence-type>
  <!-- Content: sequence-constructor -->
</xsl:variable>

許可した親要素:

  • xsl:stylesheet
  • xsl:transform
  • xsl:function
  • 内容形式が シーケンスコンストラクタ であるいくつかのXSLT 要素 いくつかのリテラル結果要素

xsl:when

 

書式・モデル:

<xsl:when
  test = expression>
  <!-- Content: sequence-constructor -->
</xsl:when>

許可した親要素:

  • xsl:choose

xsl:with-param

 

書式・モデル:

<xsl:with-param
  name = qname
  select? = expression
  as? = sequence-type
  tunnel? = "yes" | "no">
  <!-- Content: sequence-constructor -->
</xsl:with-param>

許可した親要素:

  • xsl:apply-templates
  • xsl:apply-imports
  • xsl:call-template
  • xsl:next-match

E エラー条件要約(非標準) Summary of Error Conditions (Non-Normative)

F 特徴定義方法チェックリスト(非標準) Checklist of Implementation-Defined Features (Non-Normative)

G XSLT スタイルシートにおけるスキーマ (非標準)

次に続くスキーマは、XSLTスタイルシートモジュールの構造を記述します。 それはスタイルシートに適用する制約全てを定義するわけではありません (例えば、それは、XPath を含んでいる属性を正確に示すデータタイプを定義する事を試みません)。 しかしながら、妥当なスタイルシートモジュールのそれぞれは、前方互換性動作を実行する要素を含まない限り、このスキーマと一致します。

このスキーマのコピーは、 http://www.w3.org/2007/schema-for-xslt20.xsd において利用可能となっています。

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://www.w3.org/1999/XSL/Transform"
	ElementFormDefault="qualified"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:annotation>
	<xs:documentation>
		これは、XSLT 2.0 スタイルシートにおけるスキーマです。
		それは、XSLT名前空間に出現する要素全てを定義します;
		それはまた、ユーザー定義リテラル結果要素、拡張命令と
		トップレベルデータ要素で構成される含有物というカギを提供します。
		スキーマは、 WebMethods Inc の Asir S Vedamuthu によって作成した
		XSLT 1.0スタイルシートにおけるスキーマから(種別許可を伴って)
		得られます。
		このスキーマは、
		http://www.w3.org/Consortium/Legal/copyright-software-19980720
		で作成したW3Cソフトウェアライセンスの条件下での利用を可能にします。
		スキーマは、次に続くようにを系統だてられます:
		PART A: 要素定義における基準として利用した複雑なタイプと
			モデルグループの定義
		PART B: 個々の XSLT 要素の定義
		PART C: リテラル結果要素における定義
		PART D: 属性定義の中で利用した単純なタイプ定義
		このスキーマは、妥当なXSLT 2.0スタイルシートモジュールに適用する制約
		全てを定義する事を試みません。
		それは、このスキーマと一致すべき全ての妥当なスタイルシートモジュール
		という意図です;
		しかしながら、スキーマは、非標準であり、いくつかの衝突のイベント
		にある、先行して取得する勧告のテキストです。
		このスキーマは、スタイルシートが前方互換性モードを利用する
		セクションを持つ場合に適用する特別規則を満たしません。
		このモードでは、 version="3.0" と設定している XSLT 2.0で
		定義していないXSLT名前空間利用される事から得る要素を許容します。
		単純化スタイルシート
		(最も外側にある要素としてのリテラル結果要素を伴うそれら)は、
		仮に妥当性検証が lax モードで始まる場合にのみこのスキーマに対して
		妥当性検証するでしょう。
		このバージョンは、
		作成日:2005-02-11
		作者:
		Michael H Kay,
		Saxonica Limited Jeni Tennison,
		Jeni Tennison Consulting Ltd
		です。
	</xs:documentation>
</xs:annotation>	 
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 
<!--
xml:space と xml:lang 宣言は、様々なツールを利用してスキーマを処理する問題に起因して
コメントアウトされる為に必要になる場合があります。
-->
<xs:import namespace="http://www.w3.org/XML/1998/namespace" 
	schemaLocation="http://www.w3.org/2001/xml.xsd"/>
<!-- 
		XSLT スタイルシートは、 xsl:import-schema 要素にある
		in-line スキーマを含む場合があり、
		その為、スキーマの為のスキーマが取りこまれる必要があります。
-->
<xs:import namespace="http://www.w3.org/2001/XMLSchema"
			schemaLocation="http://www.w3.org/2001/XMLSchema.xsd"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:annotation>
	<xs:documentation>
	PART A: 要素定義における基準として利用した複雑なタイプとモデルグループの定義
	</xs:documentation>
</xs:annotation>	 
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="generic-element-type" mixed="true">
	<xs:attribute name="default-collation" type="xsl:uri-list"/>
	<xs:attribute name="exclude-result-prefixes" type="xsl:prefix-list-or-all"/>
	<xs:attribute name="extension-element-prefixes" type="xsl:prefix-list"/>
	<xs:attribute name="use-when" type="xsl:expression"/>
	<xs:attribute name="xpath-default-namespace" type="xs:anyURI"/>
	<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xs:complexType name="versioned-element-type" mixed="true">
	<xs:complexContent>
		<xs:extension base="xsl:generic-element-type">
			<xs:attribute name="version" type="xs:decimal" use="optional"/>
		</xs:extension>
	</xs:complexContent>
</xs:complexType>
<xs:complexType name="element-only-versioned-element-type" mixed="false">
	<xs:complexContent>
		<xs:restriction base="xsl:versioned-element-type">
			<xs:anyAttribute namespace="##other" processContents="lax"/>
		</xs:restriction>
	</xs:complexContent>
</xs:complexType>
<xs:complexType name="sequence-constructor">
	<xs:complexContent mixed="true">
		<xs:extension base="xsl:versioned-element-type">
			<xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
		</xs:extension>
	</xs:complexContent>
</xs:complexType>
<xs:group name="sequence-constructor-group">
	<xs:choice>
		<xs:element ref="xsl:variable"/>
		<xs:element ref="xsl:instruction"/>
		<xs:group ref="xsl:result-elements"/>
	</xs:choice>
</xs:group>
<xs:element name="declaration" type="xsl:generic-element-type" abstract="true"/>
<xs:element name="instruction" type="xsl:versioned-element-type" abstract="true"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:annotation>
	<xs:documentation>
		PART B: 個々の XSLT 要素の定義
	</xs:documentation>
</xs:annotation>	 
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="analyze-string" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent>
			<xs:extension base="xsl:element-only-versioned-element-type">
	<xs:sequence>
		<xs:element ref="xsl:matching-substring" minOccurs="0"/>
		<xs:element ref="xsl:non-matching-substring" minOccurs="0"/>
		<xs:element ref="xsl:fallback" minOccurs="0" maxOccurs="unbounded"/>
	</xs:sequence>
	<xs:attribute name="select" type="xsl:expression" use="required"/>
	<xs:attribute name="regex" type="xsl:avt" use="required"/>
	<xs:attribute name="flags" type="xsl:avt" default=""/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="apply-imports" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent>
			<xs:extension base="xsl:element-only-versioned-element-type">
	<xs:sequence>
		<xs:element ref="xsl:with-param" minOccurs="0" maxOccurs="unbounded"/>
	</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="apply-templates" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent>
			<xs:extension base="xsl:element-only-versioned-element-type">
	<xs:choice minOccurs="0" maxOccurs="unbounded">
		<xs:element ref="xsl:sort"/>
		<xs:element ref="xsl:with-param"/>
	</xs:choice>
	<xs:attribute name="select" type="xsl:expression" default="child::node()"/>
	<xs:attribute name="mode" type="xsl:mode"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="attribute" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:sequence-constructor">
	<xs:attribute name="name" type="xsl:avt" use="required"/>
	<xs:attribute name="namespace" type="xsl:avt"/>
	<xs:attribute name="select" type="xsl:expression"/>
	<xs:attribute name="separator" type="xsl:avt"/>	 
	<xs:attribute name="type" type="xsl:QName"/>
	<xs:attribute name="validation" type="xsl:validation-type"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="attribute-set" substitutionGroup="xsl:declaration">
	<xs:complexType>
		<xs:complexContent>
			<xs:extension base="xsl:element-only-versioned-element-type">
	<xs:sequence minOccurs="0" maxOccurs="unbounded">
		<xs:element ref="xsl:attribute"/>
	</xs:sequence>
	<xs:attribute name="name" type="xsl:QName" use="required"/>
	<xs:attribute name="use-attribute-sets" type="xsl:QNames" default=""/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="call-template" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent>
			<xs:extension base="xsl:element-only-versioned-element-type">
	<xs:sequence>
		<xs:element ref="xsl:with-param" minOccurs="0" maxOccurs="unbounded"/>
	</xs:sequence>
	<xs:attribute name="name" type="xsl:QName" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="character-map" substitutionGroup="xsl:declaration">
	<xs:complexType>
		<xs:complexContent>
			<xs:extension base="xsl:element-only-versioned-element-type">
	<xs:sequence>
		<xs:element ref="xsl:output-character" minOccurs="0" maxOccurs="unbounded"/>
	</xs:sequence>
	<xs:attribute name="name" type="xsl:QName" use="required"/>
	<xs:attribute name="use-character-maps" type="xsl:QNames" default=""/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="choose" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent>
			<xs:extension base="xsl:element-only-versioned-element-type">
	<xs:sequence>
		<xs:element ref="xsl:when" maxOccurs="unbounded"/>
		<xs:element ref="xsl:otherwise" minOccurs="0"/>
	</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="comment" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:sequence-constructor">
	<xs:attribute name="select" type="xsl:expression"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="copy" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:sequence-constructor">
	<xs:attribute name="copy-namespaces" type="xsl:yes-or-no" default="yes"/>
	<xs:attribute name="inherit-namespaces" type="xsl:yes-or-no" default="yes"/>
	<xs:attribute name="use-attribute-sets" type="xsl:QNames" default=""/>
	<xs:attribute name="type" type="xsl:QName"/>
	<xs:attribute name="validation" type="xsl:validation-type"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="copy-of" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:versioned-element-type">
	<xs:attribute name="select" type="xsl:expression" use="required"/>
	<xs:attribute name="copy-namespaces" type="xsl:yes-or-no" default="yes"/>
	<xs:attribute name="type" type="xsl:QName"/>
	<xs:attribute name="validation" type="xsl:validation-type"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="decimal-format" substitutionGroup="xsl:declaration">
	<xs:complexType>
		<xs:complexContent>
			<xs:extension base="xsl:element-only-versioned-element-type">
	<xs:attribute name="name" type="xsl:QName"/>
	<xs:attribute name="decimal-separator" type="xsl:char" default="."/>
	<xs:attribute name="grouping-separator" type="xsl:char" default=","/>
	<xs:attribute name="infinity" type="xs:string" default="Infinity"/>
	<xs:attribute name="minus-sign" type="xsl:char" default="-"/>
	<xs:attribute name="NaN" type="xs:string" default="NaN"/>
	<xs:attribute name="percent" type="xsl:char" default="%"/>
	<xs:attribute name="per-mille" type="xsl:char" default="&#x2030;"/>
	<xs:attribute name="zero-digit" type="xsl:char" default="0"/>
	<xs:attribute name="digit" type="xsl:char" default="#"/>
	<xs:attribute name="pattern-separator" type="xsl:char" default=";"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="element" substitutionGroup="xsl:instruction">
	<xs:complexType mixed="true">
		<xs:complexContent>
			<xs:extension base="xsl:sequence-constructor">
	<xs:attribute name="name" type="xsl:avt" use="required"/>
	<xs:attribute name="namespace" type="xsl:avt"/>
	<xs:attribute name="inherit-namespaces" type="xsl:yes-or-no" default="yes"/>
	<xs:attribute name="use-attribute-sets" type="xsl:QNames" default=""/>
	<xs:attribute name="type" type="xsl:QName"/>
	<xs:attribute name="validation" type="xsl:validation-type"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="fallback" substitutionGroup="xsl:instruction" type="xsl:sequence-constructor"/>
<xs:element name="for-each" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:versioned-element-type">
	<xs:sequence>
		<xs:element ref="xsl:sort" minOccurs="0" maxOccurs="unbounded"/>
		<xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
	</xs:sequence>
	<xs:attribute name="select" type="xsl:expression" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="for-each-group" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:versioned-element-type">
	<xs:sequence>
		<xs:element ref="xsl:sort" minOccurs="0" maxOccurs="unbounded"/>
		<xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
	</xs:sequence>
	<xs:attribute name="select" type="xsl:expression" use="required"/>
	<xs:attribute name="group-by" type="xsl:expression"/>
	<xs:attribute name="group-adjacent" type="xsl:expression"/>
	<xs:attribute name="group-starting-with" type="xsl:pattern"/>
	<xs:attribute name="group-ending-with" type="xsl:pattern"/>
	<xs:attribute name="collation" type="xs:anyURI"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="function" substitutionGroup="xsl:declaration">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:versioned-element-type">
	<xs:sequence>
		<xs:element ref="xsl:param" minOccurs="0" maxOccurs="unbounded"/>
		<xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
	</xs:sequence>
	<xs:attribute name="name" type="xsl:QName" use="required"/>
	<xs:attribute name="override" type="xsl:yes-or-no" default="yes"/>
	<xs:attribute name="as" type="xsl:sequence-type" default="item()*"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="if" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:sequence-constructor">
	<xs:attribute name="test" type="xsl:expression" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="import">
	<xs:complexType>
		<xs:complexContent>
			<xs:extension base="xsl:element-only-versioned-element-type">
	<xs:attribute name="href" type="xs:anyURI" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="import-schema" substitutionGroup="xsl:declaration">
	<xs:complexType>
		<xs:complexContent>
			<xs:extension base="xsl:element-only-versioned-element-type">
	<xs:sequence>
		<xs:element ref="xs:schema" minOccurs="0" maxOccurs="1"/>
	</xs:sequence>
	<xs:attribute name="namespace" type="xs:anyURI"/>
	<xs:attribute name="schema-location" type="xs:anyURI"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="include" substitutionGroup="xsl:declaration">
		<xs:complexType>
			<xs:complexContent>
	<xs:extension base="xsl:element-only-versioned-element-type">
		<xs:attribute name="href" type="xs:anyURI" use="required"/>
	</xs:extension>
			</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="key" substitutionGroup="xsl:declaration">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:sequence-constructor">
	<xs:attribute name="name" type="xsl:QName" use="required"/>
	<xs:attribute name="match" type="xsl:pattern" use="required"/>
	<xs:attribute name="use" type="xsl:expression"/>
	<xs:attribute name="collation" type="xs:anyURI"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="matching-substring" type="xsl:sequence-constructor"/>
<xs:element name="message" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:sequence-constructor">
	<xs:attribute name="select" type="xsl:expression"/>
	<xs:attribute name="terminate" type="xsl:avt" default="no"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="namespace" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:sequence-constructor">
	<xs:attribute name="name" type="xsl:avt" use="required"/>
	<xs:attribute name="select" type="xsl:expression"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="namespace-alias" substitutionGroup="xsl:declaration">
	<xs:complexType>
		<xs:complexContent>
			<xs:extension base="xsl:element-only-versioned-element-type">
	<xs:attribute name="stylesheet-prefix" type="xsl:prefix-or-default" use="required"/>
	<xs:attribute name="result-prefix" type="xsl:prefix-or-default" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="next-match" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent>
			<xs:extension base="xsl:element-only-versioned-element-type">
	<xs:choice minOccurs="0" maxOccurs="unbounded">
		<xs:element ref="xsl:with-param"/>
		<xs:element ref="xsl:fallback"/>
	</xs:choice>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="non-matching-substring" type="xsl:sequence-constructor"/>
<xs:element name="number" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:versioned-element-type">
	<xs:attribute name="value" type="xsl:expression"/>
	<xs:attribute name="select" type="xsl:expression"/>
	<xs:attribute name="level" type="xsl:level" default="single"/>
	<xs:attribute name="count" type="xsl:pattern"/>
	<xs:attribute name="from" type="xsl:pattern"/>
	<xs:attribute name="format" type="xsl:avt" default="1"/>
	<xs:attribute name="lang" type="xsl:avt"/>
	<xs:attribute name="letter-value" type="xsl:avt"/>
	<xs:attribute name="ordinal" type="xsl:avt"/>
	<xs:attribute name="grouping-separator" type="xsl:avt"/>
	<xs:attribute name="grouping-size" type="xsl:avt"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="otherwise" type="xsl:sequence-constructor"/>
<xs:element name="output" substitutionGroup="xsl:declaration">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:generic-element-type">
	<xs:attribute name="name" type="xsl:QName"/>
	<xs:attribute name="method" type="xsl:method"/>
	<xs:attribute name="byte-order-mark" type="xsl:yes-or-no"/>
	<xs:attribute name="cdata-section-elements" type="xsl:QNames"/>
	<xs:attribute name="doctype-public" type="xs:string"/>
	<xs:attribute name="doctype-system" type="xs:string"/>
	<xs:attribute name="encoding" type="xs:string"/>
	<xs:attribute name="escape-uri-attributes" type="xsl:yes-or-no"/>
	<xs:attribute name="include-content-type" type="xsl:yes-or-no"/>
	<xs:attribute name="indent" type="xsl:yes-or-no"/>
	<xs:attribute name="media-type" type="xs:string"/>
	<xs:attribute name="normalization-form" type="xs:NMTOKEN"/>
	<xs:attribute name="omit-xml-declaration" type="xsl:yes-or-no"/>
	<xs:attribute name="standalone" type="xsl:yes-or-no-or-omit"/>
	<xs:attribute name="undeclare-prefixes" type="xsl:yes-or-no"/>
	<xs:attribute name="use-character-maps" type="xsl:QNames"/>
	<xs:attribute name="version" type="xs:NMTOKEN"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="output-character">
	<xs:complexType>
		<xs:complexContent>
			<xs:extension base="xsl:element-only-versioned-element-type">
	<xs:attribute name="character" type="xsl:char" use="required"/>
	<xs:attribute name="string" type="xs:string" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="param">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:sequence-constructor">
	<xs:attribute name="name" type="xsl:QName" use="required"/>
	<xs:attribute name="select" type="xsl:expression"/>
	<xs:attribute name="as" type="xsl:sequence-type"/>
	<xs:attribute name="required" type="xsl:yes-or-no"/>
	<xs:attribute name="tunnel" type="xsl:yes-or-no"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="perform-sort" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:versioned-element-type">
	<xs:sequence>
		<xs:element ref="xsl:sort" minOccurs="1" maxOccurs="unbounded"/>
		<xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
	</xs:sequence>
	<xs:attribute name="select" type="xsl:expression"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="preserve-space" substitutionGroup="xsl:declaration">
	<xs:complexType>
		<xs:complexContent>
			<xs:extension base="xsl:element-only-versioned-element-type">
	<xs:attribute name="elements" type="xsl:nametests" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="processing-instruction" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:sequence-constructor">
	<xs:attribute name="name" type="xsl:avt" use="required"/>
	<xs:attribute name="select" type="xsl:expression"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="result-document" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:sequence-constructor">
	<xs:attribute name="format" type="xsl:avt"/>
	<xs:attribute name="href" type="xsl:avt"/>
	<xs:attribute name="type" type="xsl:QName"/>
	<xs:attribute name="validation" type="xsl:validation-type"/>
	<xs:attribute name="method" type="xsl:avt"/>
	<xs:attribute name="byte-order-mark" type="xsl:avt"/>
	<xs:attribute name="cdata-section-elements" type="xsl:avt"/>
	<xs:attribute name="doctype-public" type="xsl:avt"/>
	<xs:attribute name="doctype-system" type="xsl:avt"/>
	<xs:attribute name="encoding" type="xsl:avt"/>
	<xs:attribute name="escape-uri-attributes" type="xsl:avt"/>
	<xs:attribute name="include-content-type" type="xsl:avt"/>
	<xs:attribute name="indent" type="xsl:avt"/>
	<xs:attribute name="media-type" type="xsl:avt"/>
	<xs:attribute name="normalization-form" type="xsl:avt"/>
	<xs:attribute name="omit-xml-declaration" type="xsl:avt"/>
	<xs:attribute name="standalone" type="xsl:avt"/>
	<xs:attribute name="undeclare-prefixes" type="xsl:avt"/>
	<xs:attribute name="use-character-maps" type="xsl:QNames"/>
	<xs:attribute name="output-version" type="xsl:avt"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="sequence" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:sequence-constructor">
	<xs:attribute name="select" type="xsl:expression"/>
	<xs:attribute name="as" type="xsl:sequence-type"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="sort">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:sequence-constructor">
	<xs:attribute name="select" type="xsl:expression"/>
	<xs:attribute name="lang" type="xsl:avt"/>
	<xs:attribute name="data-type" type="xsl:avt" default="text"/>
	<xs:attribute name="order" type="xsl:avt" default="ascending"/>
	<xs:attribute name="case-order" type="xsl:avt"/>
	<xs:attribute name="collation" type="xsl:avt"/>
	<xs:attribute name="stable" type="xsl:yes-or-no"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="strip-space" substitutionGroup="xsl:declaration">
	<xs:complexType>
		<xs:complexContent>
			<xs:extension base="xsl:element-only-versioned-element-type">
	<xs:attribute name="elements" type="xsl:nametests" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="stylesheet" substitutionGroup="xsl:transform"/>
<xs:element name="template" substitutionGroup="xsl:declaration">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:versioned-element-type">
	<xs:sequence>
		<xs:element ref="xsl:param" minOccurs="0" maxOccurs="unbounded"/>
		<xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
	</xs:sequence>
	<xs:attribute name="match" type="xsl:pattern"/>
	<xs:attribute name="priority" type="xs:decimal"/>
	<xs:attribute name="mode" type="xsl:modes"/>
	<xs:attribute name="name" type="xsl:QName"/>
	<xs:attribute name="as" type="xsl:sequence-type" default="item()*"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:complexType name="text-element-base-type">
	<xs:simpleContent>
		<xs:restriction base="xsl:versioned-element-type">
			<xs:simpleType>
	<xs:restriction base="xs:string"/>
			</xs:simpleType>
			<xs:anyAttribute namespace="##other" processContents="lax"/>
		</xs:restriction>
	</xs:simpleContent>
</xs:complexType>
<xs:element name="text" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:simpleContent>
			<xs:extension base="xsl:text-element-base-type">
	<xs:attribute name="disable-output-escaping" type="xsl:yes-or-no" default="no"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
</xs:element>
<xs:complexType name="transform-element-base-type">
	<xs:complexContent>
		<xs:restriction base="xsl:element-only-versioned-element-type">
			<xs:attribute name="version" type="xs:decimal" use="required"/>
			<xs:anyAttribute namespace="##other" processContents="lax"/>
		</xs:restriction>
	</xs:complexContent>
</xs:complexType>
<xs:element name="transform">
	<xs:complexType>
		<xs:complexContent>
			<xs:extension base="xsl:transform-element-base-type">
	<xs:sequence>
		<xs:element ref="xsl:import" minOccurs="0" maxOccurs="unbounded"/>
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element ref="xsl:declaration"/>
			<xs:element ref="xsl:variable"/>
			<xs:element ref="xsl:param"/>
			<xs:any namespace="##other" processContents="lax"/> <!-- weaker than XSLT 1.0 -->
		</xs:choice>
	</xs:sequence>
	<xs:attribute name="id" type="xs:ID"/>
	<xs:attribute name="default-validation" type="xsl:validation-strip-or-preserve" default="strip"/>
	<xs:attribute name="input-type-annotations" type="xsl:input-type-annotations-type" default="unspecified"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="value-of" substitutionGroup="xsl:instruction">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:sequence-constructor">
	<xs:attribute name="select" type="xsl:expression"/>
	<xs:attribute name="separator" type="xsl:avt"/>
	<xs:attribute name="disable-output-escaping" type="xsl:yes-or-no" default="no"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="variable">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:sequence-constructor">
	<xs:attribute name="name" type="xsl:QName" use="required"/>
	<xs:attribute name="select" type="xsl:expression" use="optional"/>
	<xs:attribute name="as" type="xsl:sequence-type" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="when">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:sequence-constructor">
	<xs:attribute name="test" type="xsl:expression" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<xs:element name="with-param">
	<xs:complexType>
		<xs:complexContent mixed="true">
			<xs:extension base="xsl:sequence-constructor">
	<xs:attribute name="name" type="xsl:QName" use="required"/>
	<xs:attribute name="select" type="xsl:expression"/>
	<xs:attribute name="as" type="xsl:sequence-type"/>
	<xs:attribute name="tunnel" type="xsl:yes-or-no"/>	 
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:annotation>
	<xs:documentation>
		PART C: リテラル結果要素における定義
		スタイルシートにある許されるリテラル結果要素を定義する為の3つの方法があります。
		(a) 何も実行するものがない場合。
		これは、XSLT名前空間の中に存在しないそれを提供したリテラル結果要素としていくつかの要素が利用される事を許容する。
		(b) 部分文字列グループのメンバーとして許容したリテラル結果要素全てを宣言する
		(c) 許容したリテラル結果要素全てを適応させる為の xsl:result-elements をまとめる書式・形式を再定義する。
		リテラル結果要素は、XSLT名前空間にある確実な属性を受け取る事を許容します。
		これらは、いくつかのリテラル結果要素の定義の中に含まれる事ができる literal-result-element-attributes をまとめる属性の中で定義されます。
	</xs:documentation>
</xs:annotation>	 
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="literal-result-element" abstract="true" type="xs:anyType"/>
<xs:attributeGroup name="literal-result-element-attributes">
	<xs:attribute name="default-collation" form="qualified" type="xsl:uri-list"/>
	<xs:attribute name="extension-element-prefixes" form="qualified" type="xsl:prefixes"/>
	<xs:attribute name="exclude-result-prefixes" form="qualified" type="xsl:prefixes"/>
	<xs:attribute name="xpath-default-namespace" form="qualified" type="xs:anyURI"/>
	<xs:attribute name="inherit-namespaces" form="qualified" type="xsl:yes-or-no" default="yes"/>
	<xs:attribute name="use-attribute-sets" form="qualified" type="xsl:QNames" default=""/>
	<xs:attribute name="use-when" form="qualified" type="xsl:expression"/>
	<xs:attribute name="version" form="qualified" type="xs:decimal"/>
	<xs:attribute name="type" form="qualified" type="xsl:QName"/>
	<xs:attribute name="validation" form="qualified" type="xsl:validation-type"/>
</xs:attributeGroup>
<xs:group name="result-elements">
	<xs:choice>
		<xs:element ref="xsl:literal-result-element"/>
		<xs:any namespace="##other" processContents="lax"/>
		<xs:any namespace="##local" processContents="lax"/>
	</xs:choice>
</xs:group>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:annotation>
	<xs:documentation>
		PART D: 属性定義の中で利用した単純なタイプ定義
	</xs:documentation>
</xs:annotation>	 
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:simpleType name="avt">
	<xs:annotation>
		<xs:documentation>
			this type is used for all attributes that allowed an attribute value template.
			The general rule for the syntax of attribute value templates, and the specific
			rule for each such as attribute are described in the XSLT 2.0 recommendation.
		</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="char">
	<xs:annotation>
		<xs:documentation>
			A string be including exactly one character.
		</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:string">
		<xs:length value="1"/>
	</xs:restriction>
</xs:simpleType>
<xs:simpleType name="expression">
	<xs:annotation>
		<xs:documentation>
			An XPath 2.0 expression.
		</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:token">
		<xs:pattern value=".+"/>
	</xs:restriction>
</xs:simpleType>
<xs:simpleType name="input-type-annotations-type">
	<xs:annotation>
		<xs:documentation>
			Describes how type annotation in source document are handled.
		</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:token">
		<xs:enumeration value="preserve"/>
		<xs:enumeration value="strip"/>	 
		<xs:enumeration value="unspecified"/>
	</xs:restriction>
</xs:simpleType>
<xs:simpleType name="level">
	<xs:annotation>
		<xs:documentation>
			The level attribute of xsl:number: 
			one of single, multiple or any.
		</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:NCName">
		<xs:enumeration value="single"/>
		<xs:enumeration value="multiple"/>
		<xs:enumeration value="any"/>
	</xs:restriction>
</xs:simpleType>
<xs:simpleType name="mode">
	<xs:annotation>
		<xs:documentation>
			The mode attribute of xsl:apply-templates: 
			either a QName、または、 #current or #default.
		</xs:documentation>
	</xs:annotation>
	<xs:union memberTypes="xsl:QName">
		<xs:simpleType>
			<xs:restriction base="xs:token">
	<xs:enumeration value="#default"/>
	<xs:enumeration value="#current"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:union>
</xs:simpleType>
<xs:simpleType name="modes">
	<xs:annotation>
		<xs:documentation>
			The mode attribute of xsl:template: 
			either a list、 each member being either a QName or #default;
			or the value #all
		</xs:documentation>
	</xs:annotation>
	<xs:union>
		<xs:simpleType>
			<xs:list>
	<xs:simpleType>
		<xs:union memberTypes="xsl:QName">
			<xs:simpleType>
				<xs:restriction base="xs:token">
		<xs:enumeration value="#default"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
			</xs:list>
		</xs:simpleType>
		<xs:simpleType>
			<xs:restriction base="xs:token">
	<xs:enumeration value="#all"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:union>
</xs:simpleType>
<xs:simpleType name="nametests">
	<xs:annotation>
		<xs:documentation>
			A list of NameTests、 as difined in the XPath 2.0 recommendation.
			Each NameTest is either a QName or "*" or "prefix:*" or "*:localname"
		</xs:documentation>
	</xs:annotation>
	<xs:list>
		<xs:simpleType>
			<xs:union memberTypes="xsl:QName">
	<xs:simpleType>
		<xs:restriction base="xs:token">
			<xs:enumeration value="*"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType>
		<xs:restriction base="xs:token">
			<xs:pattern value="\i\c*:\*"/>
			<xs:pattern value="\*:\i\c*"/>
		</xs:restriction>
	</xs:simpleType>
			</xs:union>
		</xs:simpleType>
	</xs:list>
</xs:simpleType>
<xs:simpleType name="prefixes">
	<xs:list ItemType="xs:NCName"/>
</xs:simpleType>
<xs:simpleType name="prefix-list-or-all">
	<xs:union memberTypes="xsl:prefix-list">
		<xs:simpleType>
			<xs:restriction base="xs:token">
	<xs:enumeration value="#all"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:union>
</xs:simpleType>
<xs:simpleType name="prefix-list">
	<xs:list ItemType="xsl:prefix-or-default"/>
</xs:simpleType>
<xs:simpleType name="method">
	<xs:annotation>
		<xs:documentation>
			The method attribute of xsl:output:
			Either one of the recognized names "xml", "xhtml", "html", "text",
			or a QName that must include a prefix.
		</xs:documentation>
	</xs:annotation>
	<xs:union>
		<xs:simpleType>
			<xs:restriction base="xs:NCName">
	<xs:enumeration value="xml"/>
	<xs:enumeration value="xhtml"/>
	<xs:enumeration value="html"/>
	<xs:enumeration value="text"/>
			</xs:restriction>
		</xs:simpleType>
		<xs:simpleType>
			<xs:restriction base="xsl:QName">
	<xs:pattern value="\c*:\c*"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:union>
</xs:simpleType>
<xs:simpleType name="pattern">
	<xs:annotation>
		<xs:documentation>
			A match pattern as defined in the XSLT 2.0 recommendation.
			The syntax for pattern is a restricted form of the syntax for
			XPath 2.0 expression.
		</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xsl:expression"/>
</xs:simpleType>
<xs:simpleType name="prefix-or-default">
	<xs:annotation>
		<xs:documentation>
			Either a namespace prefix or #default.
			used in the xsl:namespace-alias element.
		</xs:documentation>
	</xs:annotation>
	<xs:union memberTypes="xs:NCName">
		<xs:simpleType>
			<xs:restriction base="xs:token">
	<xs:enumeration value="#default"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:union>
</xs:simpleType>
<xs:simpleType name="QNames">
	<xs:annotation>
		<xs:documentation>
			A list of QNames.
			used in the [xsl:]use-attribute-sets attribute of various element,
			and in the cdata-section-elements attribute of xsl:output
		</xs:documentation>
	</xs:annotation>
	<xs:list ItemType="xsl:QName"/>
</xs:simpleType>
<xs:simpleType name="QName">
	<xs:annotation>
		<xs:documentation>
			A QName.
			This scheme does not use the built-in type xs:QName, but rather defines its own
			QName type. 
Although xs:QName would define the correct validation on these attribute,
			a schema processor would expand unprefixed QNames incorrectly when construct the PSVI,
			because (as defined in XML schema errata) an unprefixed xs:QName is assumed to be in
			the default namespace, which is not the correct assumption for XSLT.
			The data type is defined as a restriction of the built-in type Name, restricted
			so that it can only contain one colon which must not be the first or last character.
		</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:Name">
		<xs:pattern value="([^:]+:)?[^:]+"/>
	</xs:restriction>
</xs:simpleType>
<xs:simpleType name="sequence-type">
	<xs:annotation>
		<xs:documentation>
			The description of a data type, conforming to the
			Sequence Type production defined in the XPath 2.0 recommendation
		</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:token">
		<xs:pattern value=".+"/>
	</xs:restriction>
</xs:simpleType>
<xs:simpleType name="uri-list">
	<xs:list ItemType="xs:anyURI"/>
</xs:simpleType>
<xs:simpleType name="validation-strip-or-preserve">
	<xs:annotation>
		<xs:documentation>
			Describes different ways of type-annotating an element, or attribute.
		</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xsl:validation-type">
		<xs:enumeration value="preserve"/>
		<xs:enumeration value="strip"/>
	</xs:restriction>
</xs:simpleType>
<xs:simpleType name="validation-type">
	<xs:annotation>
		<xs:documentation>
			Describes different ways of type-annotating an element, or attribute.
		</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:token">
		<xs:enumeration value="strict"/>
		<xs:enumeration value="lax"/>
		<xs:enumeration value="preserve"/>
		<xs:enumeration value="strip"/>
	</xs:restriction>
</xs:simpleType>
<xs:simpleType name="yes-or-no">
	<xs:annotation>
		<xs:documentation>
			One of the value "yes" or "no".
		</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:token">
		<xs:enumeration value="yes"/>
		<xs:enumeration value="no"/>
	</xs:restriction>
</xs:simpleType>
<xs:simpleType name="yes-or-no-or-omit">
	<xs:annotation>
		<xs:documentation>
			One of the value "yes" or "no" or "omit".
		</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:token">
		<xs:enumeration value="yes"/>
		<xs:enumeration value="no"/>
		<xs:enumeration value="omit"/>
	</xs:restriction>
</xs:simpleType>
</xs:schema>

H 謝辞 (非標準)

この仕様は、 W3C XSL Working Group (WG)による発行において開発及び承認されました。 この仕様のワーキンググループ承認は、その承認において賛否表示した全てのワーキンググループメンバーを含む必要はありません。

XSL ワーキンググループの議長はIBMのSharon Adlerです。 XSL ワーキンググループは、 XSLT と XSL フォーマットオブジェクトについて作業する2つのチームをまたいで含みます。 XSLT活動に従事させる現在の XSL ワーキンググループのメンバーは、(以下の通り):

協力者(敬称略) 所属
Colin Paul Adams Invited Expert
Anders Berglund IBM
Scott Boag IBM
Michael Kay Invited Expert
Alex Milowski Invited Expert
William Peterson Novell、 Inc
Michael Sperberg-McQueen W3C
Zarella Rendon Invited Expert
Jeni Tennison Invited Expert
Joanne Tong IBM
Norm Walsh Sun Microsystems Inc.
Mohamed Zergaoui Innovimax SARL
(欠員) Oracle

交代要員は、ワーキンググループ議論の中で実行部分に携わった場合にのみ列挙されます。 しかしながら、グループは、多くのメンバーが彼らが公式にあポイントされるかどうかは別として彼らの組織の仲間からのサポートに対し感謝します。

XSL ワーキンググループにおけるW3C代表は Michael Sperberg-McQueen です。

次に続く個人は、かつてワーキンググループのメンバーだった間、そしてまたそれ以後もいくつかの状況で多大な貢献をして下さいました:

James Clark、 Invited Expert
Jonathan Marsh、 Microsoft
Steve Muench、Oracle
Steve Zilles、 Adobe
Evan Lenz、 XYZFind
Mark Scardina、Oracle
Kristoffer Rose、 IBM
Henry Zongaro、 IBM
Henry Thompson、 University of Edinburgh
K Karun、Oracle
(敬称略)

ワーキンググループは、 format-number 関数の新しい仕様について、特に、IBMの David Marston 氏によってなされた貢献に感謝の意を表したいと思います。

この仕様は、XSLT 1.0勧告の成功に基づき作成。XSLT 1.0における貢献者のリストについては[XSLT 1.0]参照。

I 要求チェックリスト(非標準) Checklist of Requirements (Non-Normative)

J XSLT 1.0 (非標準)からの変更点

J.1 非互換性変更点

その振る舞いが XSLT 1.0によって完全に記述されたスタイルシートが XSLT 1.0の下で(生成した存在しないエラーを)有効にされた全ての既知のケースを列挙するこのセクションは、 XSLT 2.0の下では異なる結果を生成するでしょう。

議論のほとんどは、スキーマの欠如にある互換性との関係です:それは、 XSLT 1.0を利用して生成した場合に存在しないスキーマを持つ変換されているソース文書、そしてまたXSLT 2.0に移行している場合に追加される存在しないスキーマを仮定するという事です。 スキーマが追加される場合にする事になるいくつかの付加的な事柄は、そのセクションの末尾で注釈が付記されます。

J.1.1 ツリー構築:ホワイトスペース除去

XSLT 1.0 と XSLT 2.0の双方では、XSLT仕様は構築されるソースツリーにおける方法上の存在しない制約を出します。 XSLT 2.0については、しかしながら、 [データモデル] 仕様は、利用される為の他の処理を許可する事もある場合、情報セット(Infoset)または、PSVIからのツリー構築における厳密な処理を記述します。 [データモデル]で記述したプロセスは、要素のみの内容を持つ事を宣言した要素からホワイトスペーステキストノードを 除去する効果を持ちます。 たとえ、 XSLT 1.0 仕様が、このようなふるまいを除外するとしても、それは、たいていの XSLT 1.0 手法作業に存在する方法とは異なります。 それは、最大限のインターオペイラビリティと [データモデル]の中で記述したそのプロセスを利用してソースツリーを構築する事、 または、 そのまま残すことか、あるいはまた、先の XSLT 1.0 手法の一般慣習と一致するホワイトスペース削除する事 のいずれかのユーザーオプションを求めるべき後方互換性を提供する事を期待している XSLT 2.0 手法を推奨(recommended)します。

ツリー構築中に適用したホワイトスペース除去を無視したのと同じ結果を与える変換を書く為にスタイルシート作者は、(以下が)可能です:

  • 要素のみの内容を持っている要素からホワイトスペーステキストノードを削除する為の xsl:strip-space 宣言を利用 (これは、もし、ホワイトスペースが既に除去されている場合には、存在しない効果を持ちます(効果はありません)。)

  • テキストノードではない、処理される為の文脈ノードの子要素だけに起因する
    <xsl:apply-templates select="*"/>
    のような命令の利用

J.1.2 シリアライゼーション挙動における変更点

シリアライゼーションの出力の仕様は、 XSLT 1.0にある以上に規範的です。 例えば、 html 出力メソッドは、妥当でないHTML文字列を回避する為に要求されます。 また、シリアライゼーションパラメータの正確な組み合わせは、現在は、エラーになると定義されます。 更に、 XSLT 1.0 手法は、シリアライザーの振る舞いを部分修正する付加的な xsl:output 属性を追加する事を許容されました。 いくつかのこのような拡張は、 XSLT 2.0のより厳格な規則の下では不一致になる場合があります。 例えば、いくつかの XSLT 1.0 プロセッサは、(現在では標準として提供される利便性である) html 出力メソッドによって meta 要素の作成を OFFに切り替える為の拡張属性を提供しました。 順応XSLT 2.0 プロセッサは、このような拡張を提供する事を許容しません。

必要とする場合に、手法は、 記述するXSLT 1.0 シリアライザーの振る舞いをより厳密にまねる為に設計した付加的なシリアライゼーションメソッドを提供する場合があります

J.1.3 後方互換性挙動

XSLT 2.0の下で異なるいくつかの XSLT 構築のふるまいは、 後方互換性挙動が利用可能にされるかどうかに依存します。 これらのケースでは、その振る舞いは、( [xsl:]version 属性を利用して行われる) 後方互換性挙動が利用可能とされるという事を保証する事によって XSLT 1.0 と互換性を持たせる場合があります。

これらの構築は、次に続くようになります:

  1. もし、 xsl:value-of 命令が、存在しない separator 属性を持ち、 select 式の値が、1つ以上のアイテムで構成されるシーケンスである場合には、 シーケンスにある XSLT 2.0 の下にある全てのアイテムが、1つ目以降の全てのアイテムが廃棄される XSLT 1.0 にある場合はスペース区切りで出力されるでしょう。

  2. もし、属性値テンプレート有効な値が、 1つ以上のアイテムで構成されるシーケンスである場合には、 シーケンスにある XSLT 2.0 の下にある全てのアイテムは、シーケンスにある全てのアイテムが、1つ目以降の全てのアイテムが廃棄される XSLT 1.0 にある場合はスペース区切りで出力されるでしょう。

  3. もし、 xsl:number 命令の value 属性にある式が、1つ以上のアイテムで構成されるシーケンスを返す場合には、 XSLT 2.0 配下のシーケンスにある全てのアイテムは、 format 属性で定義したように出力されるでしょうが、XSLT 1.0 の下では、1つ目以降の全てのアイテムは、廃棄されるでしょう。 もし、そのシーケンスがカラである場合には、 何もないXSLT 2.0 の下では、(もし、要求した場合プリフィクス(前置詞)とサフィックス(後置詞)以外)出力されるでしょうが、XSLT 1.0 の下では、出力は"NaN"です。 もし、シーケンスにあるその最初のアイテムが数値に変換される事が出来ない場合には、 XSLT 2.0 は、 XSLT 1.0 が"NaN"を出力する場合、回復不能なエラーをシグナル出力します。

    もし、 xsl:numbervalue 属性にある式が、カラのシーケンスを返す場合、 または、数値でない値を含んでいるシーケンスである場合には、 XSLT 2.0 プロセッサは、回復可能なエラーをシグナル出力する場合がありますが、利用可能な後方互換性を伴う場合には、出力は、 NaN です。

  4. もし、 xsl:sort 要素の select 属性の原子化された値が、 1つ以上のアイテムで構成されるシーケンスである場合には、XSLT 2.0 の下では、 XSLT 1.0 にある場合、エラーがシグナル出力され、 1つ目以降の全てのアイテムは、廃棄されるでしょう。

  5. もし、 xsl:call-template 命令が、呼ばれているテンプレートにあるいくつかのテンプレートパラメータ と一致しないパラメータを提供する場合には、XSLT 2.0の下では、 静的エラーがシグナル出力されますが、XSLT 1.0の下では、余分なパラメータは無視されます。

  6. もし、XPath 式が未知の関数を呼ぶ事を含む場合には、それは通常、静的エラーです。 しかし、後方互換性挙動が利用可能となる場合には、これは、回復されない動的エラーであり、 もし、関数呼び出しが実際に評価される場合に限って、それは現れます。

  7. xsl:keyuse 属性にある式の値を比較したXSLT 1.0プロセッサは、 その値は、文字列を両方とも変換する事によって key 関数の第二引数の中で提供しました。 XSLT 2.0 プロセッサは通常、提供したものとして値を比較します。 XSLT 1.0 挙動は、 もし、キー定義を作り上げる xsl:key 要素で構成されるいくつかが、 後方互換性挙動を利用可能とする場合には、そのまま残されます。

  8. もし、存在しない出力メソッドが明示的に要求される場合、そしてまた、最初の要素ノード出力がXHTML文書要素にする為に現れる場合には、 XSLT 2.0の下では、その出力メソッドは、XHTMLを既定とします; 後方互換性挙動を利用可能とする場合には、そのXML出力メソッドが利用されるでしょう。

後方互換性挙動はまた、[XPath 2.0]で定義したように、正確なXPath式の結果にも作用します。

J.1.4 スキーマの不足にある非互換性

もし、ソース文書が、スキーマから生成した存在しないタイプ情報を含む変換を入力として提供した場合には、非互換性の既知の領域は、次のようになります。 これらは、後方互換性挙動が利用可能かどうかを適用します。

  1. 1.0 以外の数字のバージョンを明記するスタイルシートは、前方互換性モード内で実行する XSLT 1.0 の中に定義されました; もし、このようなスタイルシートが、 XSLT 2.0 の中で定義されない特性を利用する場合には、 XSLT 1.0 プロセッサによってシグナル出力されないであろうエラーが XSLT 2.0 プロセッサによってシグナル出力される場合があります。

  2. XSLT 1.0における system-property 関数は、 "xsl:version" の最初の引数を伴って呼ばれた際に、数字としての 1.0 を返しました。 XSLT 2.0におけるそれは、文字列として "2.0" を返します。 テストとしての推奨(recommended) 方法は、このプロパティは、たとえば、
    <xsl:if test="number(system-property('xsl:version')) &lt;2.0">
    は、 XSLT 1.0 、または、 XSLT 2.0 プロセッサのいずれかで作業するでしょう。

  3. XSLT 2.0における存在しない match 属性を持っている xsl:template 要素上の mode 、または、 priority 属性を明記する事はエラーです。 XSLT 1.0におけるこのシチュエーションでは、属性は静かに無視されました。

  4. xsl:apply-templates 、または、 xsl:apply-imports 命令が、 実行されるビルトイン(組み込み)テンプレート規則に起因する場合には、いくつかのパラメータは、いくつかの異なるテンプレート規則を自動的に通過され提供されます。 これは、 XSLT 1.0では発生しません。

  5. XSLT 1.0 では、属性の値、コメント、または、処理命令を構築している場合にテキストノードではなく、いくつかのノードを作成する事は、回復可能なエラーでした; 回復動作は、問題のノードとその内容を無視していました。 XSLT 2.0 では、これは、もはやエラーではなく、記述した動作は、ノードを原子化する事です。 XSLT 2.0 プロセッサは、それゆえにエラー回復動作を取っていた XSLT 1.0 プロセッサと同じ結果を生成しないでしょう。

  6. XSLT 1.0 は、回復可能なエラー条件の番号を定義しましたが、 XSLT 2.0 は回復されないエラーが生じます。 Under XSLT 1.0 の下では、このようなエラーを引き金としたスタイルシートは、いくつかのXSLTプロセッサの下で失敗するでしょう、そしてまた、他の下では成功する(、または、わずかな率で完了する為に継続する)でしょう。 Under XSLT 2.0 の下では、このようなスタイルシートは、すべてプロセッサの下で失敗します。 このようなエラーの注目に値する例は、妥当でない名前を伴う要素、または、属性を構築され、文書ノードの子として属性を生成し、そしてまた、要素における1つ以上の子を生成した後、要素の属性を生成します。 この変更は、インターオペラビリティの関連の中に作られています。 分類上は、このような回復されないエラーのように、ワーキンググループは、存在しないスタイルシート作者が、故意にエラーの引き金を引き、動作回復を当てにするコードを書いているかのように基準を利用しました。

  7. XSLT 1.0では、ツリー構築のセマンティクスは、上から下のトップダウンで記述されました、XSLT 2.0では、それらは、下から上にボトムアップで記述されます。 だいたいほとんど全てのケースでは、その最後の結果は同じです。 ツリーのケースの中で1つ違いを生じるのは、次に続くような命令を利用して要素ノード内の文書ノードにある属性ノードを含む為に構築される事です:

    例:要素にある文書内の属性
    <xsl:template match="/">
    	<e>
    		<xsl:copy>
    			<xsl:attribute name="a">5</xsl:attribute>
    		</xsl:copy>
    	</e>
    </xsl:template>
    
    		

    XSLT 1.0では、xsl:copyはなく、属性aは、その時、要素eに結び付けられていました。 XSLT 2.0では、これが、文書ノードが構築された要素のコンテンツにコピーされる前に起こるのでxsl:copyによって構築した文書ノードに属性aを結びつける際にエラーが出現します。

  8. XSLT 1.0では、xsl:elementnamespace属性、または、有効でないURIへの評価をする為のxsl:attributeは、エラーではありませんでした。 以来、多くのXMLパーサーは、名前空間の名称のようないくつかの文字列を許容し、この稀な問題を引き起こしていました。 [データモデル]は、しかしながら、xs:QNameにする為のノードの名称を要求し、xs:QNameの名前空間の一部は、常にxs:anyURIです。 だから、現在は、xs:anyURIの妥当なインスタンスではない名称の名前空間内で要素、または、属性ノードを生成する事はエラーとするように定義されます。 慣習では、しかしながら、手法は、厳格なそれらが妥当な名前空間URIの中でいくつかの柔軟性を持ちます。

  9. 現在は、同じ優先度を取り込むxsl:namespace-alias宣言の2つの干渉を含む事は、スタイルシートにおける静的エラーです。

  10. 現在は、value属性と、levelfromの両方、または、count属性を含む事は、xsl:number命令における静的エラーです。 XSLT 1.0では、value属性が優先度を取得し、他の属性が静的に無視されました。

  11. xsl:sortdata-type属性が、numberという値を持つ時、XSLT 1.0 プロセッサは、文字列としてソートキーを評価し、数値となる結果を変換します。 XSLT 2.0 プロセッサは、直接数値としてソートキーを評価します。 これは、限定的に数値を文字に変換するXSLT 1.0におけるケースの中で結果に影響を及ぼし、例えば、数値positive infinityを伴うケースのようなオリジナル数値を生成しない数値を戻します。

  12. xsl:sortdata-type属性が省略された時、XSLT 1.0プロセッサは、ソートキー値を文字列に変換し、文字列としてソートするでしょう。 XSLT 2.0 プロセッサは、動的なタイプのそれらの実体に一致するものをソートするでしょう。 これが意味するところは、例えば、もし、ソートキーコンポーネントが<xsl:sort select="string-length(.)"/>と記述する場合には、 XSLT 2.0 プロセッサは、XSLT 1.0 プロセッサがアルファベット(alphabetic)ソートをしたであろう場所で数値(numeric)ソートをするでしょうという事です。

  13. xsl:sortdata-type属性が省略されるとき、または、「text」という値を持つ時、XSLT 1.0 プロセッサは、値がゼロの長さの文字列であるソートキーと等しくなるように、値がカラのノードセットであるソートキーとして扱います。 XSLT 2.0は、ゼロの長さの文字列の前に、カラのシーケンスをソートします。 この意味するところは、もし、<xsl:sort select="@a"/><xsl:sort select="@b"/>という2つのソートキーがある場合には、 ???XSLT 2.0 プロセッサが正反対の、命令を生成している間、XSLT 1.0 プロセッサは、要素<x b="2"/> after <x a="" b="1"/>をソートするでしょうという事です。

  14. format-number関数の仕様は、Java JDK 1.1 仕様に依存するという注釈を削除する為に書き直されています。 ???JDK 1.1 仕様は、振る舞いの左側面が未定義;それは、いくつかのケースは異なる結果を与えるのと似たようなものでしょう。

    シングルクォートで囲まれたフォーマット画像中の原文に忠実なテキストを含む為の性能が削除されています。; 利用するいくつかのスタイルシートは、この特性が部分修正される事を必要とするでしょう。例えば、concatFO関数を利用して原文に忠実なテキストを表示する為の代替など。

    マイナスの[sub-picture]の操作の中にあるXSLT 2.0仕様とJDK基準手法間の相違の1つを記述します。 JDK 1.1へのサブシーケンスJDKリリースは、 但し書きが追加されています。: もし、確実にマイナスであるサブパターン[sub-picture]がある場合には、マイナスである前置詞(prefix)と後置詞(suffix)を記述する事に限定して提供します。; アラビア数字の数字、 最小値、そして他の指標(特性)は、負のパターン [sub-picture]と全て同じです。 このステートメントは、JDK 1.1 仕様では、提示されません。それゆえにXSLT 1.0手法ごとにどのようにふるまうかは必要ではありませんが、直接的にJDKを利用するいくつかのXSLT 1.0手法のふるまいを記述します。 この振る舞いはXSLT 2.0では修正されません。:マイナスであるsub-pictureは、番号がマイナスである時に記述されたものとして利用されなければいけません

  15. 回復動作は、プロセッサが、document関数への引数として渡されるURIにある断片識別子を操作する事ができないエラー条件について変更されています。 XSLT 1.0は、無視されるべきURI参照全体を記述しました。 XSLT 2.0は、無視されるべき断片識別子を記述します。

  16. XSLT 1.0は、ソースXMLにあるシステム識別子とパブリック識別子のいくつかの組み合わせから伝搬される為のunparsed-entity-uri関数によって返されたURIを許容していました。 XSLT 2.0は、情報セットの中で定義したようにシステム識別子を返し、ソース文書の基準URIを利用して解決されます。 新しい関数は、パブリック識別子を返すために提供されます。

  17. パターンの既定優先度match="/"は、+0.5から-0.5までに変更されています。 この効果は、もし、-0.5と+0.5間の厳密にユーザーが記述した優先度を伴うmatch="/"を記述するいくつかのテンプレート規則がある場合には、事前にこのような規則が実行されていない限り、現在は、厳密な優先度なく、記述するmatch="/"テンプレート規則に事前参照中に選ばれるでしょう。

  18. XSLT 1.0では、先行するスペースを含んだ文字列値のある結果ツリーにある処理命令を生成可能にしてました。 しかしながら、(XSLT 2.0では)このように先行するスペースは、シリアライゼーションと解析後に失われるでしょう。 XSLT 2.0では、処理命令の文字列値にあるいくつかの先行しているスペースは、ノードが生成される時に削除されます。

  19. XSLT 1.0では、キー、変数、名前付きテンプレートのようなユーザー定義スタイルシートオブジェクトの名称において利用される事が出来る名前空間上に制限はありません。 XSLT 2.0では、正確な名前空間(例えば、XSLT名前空間とXMLスキーマ名前空間)が予約されます。

  20. "やっかいな出力回避利用不可能"として知られる事になる事を記述したXSLT 1.0における誤植: 特に一時的なツリーにノードを記述中であるときに、disable-output-escapingを利用する事を可能にすべきであり、そしてこの情報は、同じノードが最後に最終結果ツリーにコピーされ、シリアライズされる際に利用する為に保持されるでしょう。 XSLT 2.0は、この挙動についてそれほど長くない記述がなされます。(手法の非生成においてそれを許容する事を通して). この利便性におけるケース利用は、完全に異なるメカニズム、文字列マップのコンセプトによって満たされています。(参照先: 20.1 Character Maps)。

J.1.5 スキーマの優先における互換性

データタイプについての全ての情報を無視したXSLT 1.0プロセッサは、ソース文書と結び付けたスキーマ構成に含まれる場合があります。 XSLT 2.0プロセッサは、input-type-annotations属性がstripを設定するまではこのような情報のアカウントを取るでしょう。 これは、ふるまいにおける相違番号を導く場合があります。 このセクションは、いくつかの異なる種類の例に限定して試みます。それは、スキーマ情報が利用可能にされる際に期待されるでしょう。:

  • ソートのような操作は、ソートされているアイテムのデータタイプに影響されやすくなるでしょう。 例えば、もし、日付としてスキーマ内で定義されるソートキーコンポーネントのデータタイプである場合には、xsl:sort要素にあるdata-type属性の不足の中で、シーケンスは、 データ命令の中でソートされます。 XSLT1.0を伴うデータは、比較され、文字列としてソートされます。

  • 区分されないデータ上で許容される正確なオペレーションは、もし、オペレーションにおいてデータの区分が不適切な場合には、区分されたデータ上に許容しません。 例えば、substringFO関数は、文字列となるその最初の引数を除外します。 それは、区分されない値を提供する事を許容し、自動的に文字列に変換されるでしょうが、(スキーマ処理の結果として)整数や日付として表記されている値を提供する事を許容するわけではありません。

  • 属性値がcolors="red green blue"のような時、スキーマなしで処理され、単独の文字列になるように値が考慮されます。 スキーマ妥当性が適用される際、タイプがxs:NMTOKENSのようなリストタイプであると仮定すれば、値は、3つの文字列のシーケンスとして扱われるでしょう。 これは、例えば、その他の文字列との値の比較のように多くのオペレーションの結果に影響を及ぼします。 この属性値を伴うその式contains(@colors、 "green")は、もしinput-type-annotationsstripを設定する場合には、XPath 1.0でもXPath 2.0でも「true」を返します。 XPath 2.0では、スキーマ用プロセッサを伴う場合とpreserveに設定するinput-type-annotationsを伴う場合は、後方互換性利用可能な状態を伴って「false」を返す場合と後方互換性が利用不可である事を伴うエラーが起こる場合という事で同じ式です。

J.1.6 XPath 2.0 後方互換性

[XPath2.0]に含まれるXPath 2.0とXPath 1.0の非互換性についての情報

[関数と演算子]内に列挙された主要な関数ライブラリにある個別の関数にある非互換性

J.2 新しい機能性

このセクションは、XSLT 1.0との比較においてXSLT 2.0の中で提供した新しい機能性を要約します。 これらは3つのグループにアレンジされています。 1つめは、 全てのテキスト全体に普及する変更。 2つめは、メジャーな新しい特性紹介。 3つめは、技術的なマイナーチェンジのカタログ。です。

2006年11月 提案勧告からの変更点は、分割して列挙されます: 参照 J.2.4 提案勧告からの変更点

追記すると、これらの変更点について、 XSLT 1.0 の中で 報告した エラー は、解決(修正)されています。

J.2.1 Pervasive 変更点
  • 重要なテキストの再アレンジがなされています。 多くの専門用語定義は、用語辞典にハイパーリンクされ、(参照先:C 用語辞典)が追加されています。 付加的な付録は、 エラー 条件と[implementation-defined]仕様の特性を要約しています。

  • 多くの特性の仕様(例えば、キー、xsl:numberformat-number関数、xsl:importメカニズム、属性セットの説明)は、より明確にそしてより正確にそれらを作る為に書き直されています。

  • 多くの変更点は、XDM データモデルをサポートする為に、特にXPath 1.0のノードセットにおける置換としてのシーケンスにおけるサポートの為に作成されています。 これは、xsl:for-eachxsl:value-ofxsl:sortのような要素の仕様に影響を及ぼしており、 xsl:sequenceのような新しい命令の紹介を導いています。

  • 処理モデルは、異なるように記述されます。: 「結果ツリーに記述されている」命令の代わりに、現在は、それらは、値のシーケンスを返します。 この変更は、専門用語の1つとして大きいですが、それは、任意のシーケンスを巧みに操作する為にXSLT スタイルシートにおいて利用可能になり、親要素または、属性ノードを含んでいるシーケンスを含んでいるという意味でもあります。

  • 文脈評価の説明が変更されています。 現在のノードと現在のノードリストのコンセプトは、文脈アイテム、文脈位置、文脈サイズのXPathコンセプトによって置き換えられています。

  • XMLスキーマにおけるサポートの紹介を伴い、XPath 2.0、XSLT内では、現在、後方互換性が残っている間は、より強力なデータ区分の仕方をサポートします。 特に 変数とパラメータのタイプは、現在、明示的に記述される事が可能であり、スキーマ妥当性は、結果ツリーにおいて、更に一時的なツリーにある要素と属性において行使される事が可能です。

  • エラー操作の説明が改善されています。(参照先: 2.9 エラー操作(エラーハンドリング))。 これは、静的エラーと動的エラー間の相違の形式化と厳格なエラーがシグナル出力されなければいけないという事を定義する条件規則です。

  • 用語implementation-definedimplementation-dependentは、現在、密接に結び合って(一貫して)定義され、利用され、[implementation-defined]特性のチェックリストが提供されます。 (参照先:F [implementation-defined]特性のチェックリスト)。

J.2.2 メジャーな特性
  • XSLT 2.0は、XPath 1.0ではなく、XPath 2.0を伴う作業として設計されています。 これは、ノードのシーケンス上を基準とした区分システムを伴う高められたデータモデル、または、原子化された値、XMLスキーマで定義した全てのビルトイン(組み込み)タイプと新しい関数と演算子の幅広い範囲におけるサポートを持ちます。

  • 結果ツリー断片データタイプは、除かれます。コンテンツを伴う可変結合要素(と存在しない as属性)は、現在、一時的なツリーを構築し、変数の値は、このツリールートノードです。 (参照先: 9.3 変数とパラメータの値). as属性を伴う可変結合要素は、任意のシーケンスを構築する為に利用される場合があります。 これらの特性は、多くのXSLT 1.0手法によって提供されたxx:node-set拡張関数の為に必要とするものを除きます。

  • ノードのグループ化をする為の利便性が紹介されています。 (xsl:for-each-group命令、そしてcurrent-group()current-grouping-key()関数)。:参照:14 グループ化

  • 現在は、XPath式から呼ぶことが可能なスタイルシート内でユーザー定義関数を生成する事を可能にします。:参照:10.3 スタイルシート関数

  • 変換は、多数の結果ツリーを生成する事を許容されます。:参照:19.1 最終結果ツリー生成

  • 新しい命令xsl:analyze-stringは、正規表現においてそれと一致するまでテキストを処理する事が提供される事によってテキストを処理します。

  • それは、変数とパラメータの区分、テンプレートの結果タイプと関数を宣言する事を可能にします。 そのタイプは、ビルトイン(組み込み)タイプ、または、新しいxsl:import-schema宣言を利用してスキーマから取り込まれたユーザー定義区分いずれかである場合があります。

  • スタイルシートは、結果ツリーにあるとそしてまた一時的なツリーにある要素と属性における区分表記を結びつけること、ソースツリーに存在するいくつかの区分表記の利用をさせることを可能にし、そして一時的なツリーは、スキーマに対して有効にされる事が可能です。

  • 変換は、現在、名前付きテンプレートを呼ぶ為に行使されます。 これは、入力文書のラージコレクションを処理する為の変換において可能性のある創出です。 このような変換への入力は、[関数と演算子]で定義したcollectionFO関数を利用して含まれる場合、または、スタイルシートパラメータとして提供される場合があります。

  • グループ化する為に、ソートの為に、そしてキーの為に利用した値の間の比較は、文字列比較実行における名前付け照合を選択する性能を含んでいるサポートしたいくつかのデータタイプにおける規則を利用して実行される事が可能です。 これらの補語は、XPath 2.0におけるその新しい利便性は、テンプレート規則に一致している時に自動的に実行される事でもあります。

  • xsl:for-each命令は、ノードのシーケンスではない、いくつかのシーケンス処理を可能にします。

  • XHTML出力メソッドが追加されています。詳細は、[XSLT and XQuery シリアライゼーション]の中で記述されます。

  • collation属性は、ユーザー定義照合を利用してソートする事を許容する為のxsl:sort要素に追加されています。

  • 新しいxsl:next-matchは、同じソースノードに適用される為の多数のテンプレート規則を許容する為に提供されます。

  • 新しいxsl:character-map宣言は、単独の文字のシリアライゼーションを操作する事を可能にします。 これは、事前に必要とされるdisable-output-escapingにおけるいくつかの利用状況において置換として意図されます。

  • フォーマット化日付とフォーマット化時刻の為の関数が追加されています。:参照:16.5 フォーマット化日付とフォーマット化時刻

  • 新しいトンネルパラメータの利便性は、テンプレートを呼ぶごとに明示的に通過させる為にそれらを要求する事なく、変換のフェーズを全体に作用するセットになるようにパラメータを許容します。

  • 現在可能な子命令を利用して値を事前に構築した多くの命令か、あるいはまた、select属性を利用して値を構築します。;逆に言えば、select属性が現在利用できる子命令を事前に要求した命令です。

  • xsl:template宣言は、現在、いくつかの異なるモードに提供するテンプレート規則を宣言する事が可能です。;またxsl:apply-templates命令は、現在のモードで継続する処理を根拠にする事ができます。

J.2.3 マイナーチェンジ
  • 名前空間ノードを追加する為に完全に自由な出力メソッドを許容する代わりに、名前空間のプロセスは、出力前の結果ツリーに適用されるようにはからいます(手配します)。;この同じ名前空間が手配するプロセスは、利用しているコンテンツを伴う可変結合要素を構築した文書にも適用します。(参照先: 5.7.3 名前空間 Fixup)。

  • XML Baseの為のサポートが追加されています。

  • xsl:apply-imports要素は、パラメータを持つ事を許容されます。(参照先: 6.7 Overriding テンプレート規則10.1.1 Passing パラメータ to Templates)。

  • 拡張関数は、いかなる組み込みXPathタイプも持たない外部オブジェクトを返すために許容されます。

  • パターンにおける仕様(5.5 パターン)には新しいXPath文法を伴うそれを提携する事が加筆されています。 形式的なパターンのセマンティクスが単純化されています。: これは、現在、文法式内で規格外の構成の為に利用可能になります。 シンタックスとパターンのセマンティクスは、XPath 2.0式が述語内で利用される事が可能な場合を除き、本質的な未変更点を残します。

  • 後方互換性処理モードが紹介されています。:参照:3.8 後方互換性処理

  • system-property関数は、現在、常に文字列を返します。 いくつかの新しいシステムプロパティが定義されています。:参照:16.6.5 system-property

  • <xsl:messageterminate="yes">を伴うプロセッサは、今、処理を終了しなければいけません。 その文言は、事前に利用されるべきです。:参照:17 Messages

  • 新しいの番号シリアライゼーションパラメータが紹介されています。

  • 新しい命令 xsl:namespaceは、名前空間ノードを生成する為に利用可能にします。:参照:11.7 名前空間ノード生成

  • 新しい命令xsl:perform-sortは、ソートしたシーケンスの実行において利用可能にします。

  • 新しい[xsl:]xpath-default-namespace属性は、XPath式または、XSLTパターン内で適格でない名称における既定名前空間を定義する事を可能にします。

  • 属性[xsl:]version[xsl:]exclude-result-prefixes[xsl:]extension-element-prefixesは、新しい[xsl:]xpath-default-namespace[xsl:]default-collation同様にxsl:stylesheetと以前のようにリテラル結果要素上だけではなく、いくつかのXSLT 要素上で利用される事が可能です。 特にそれらは、xsl:template要素上で今利用できます。

  • 新しいunparsed-text関数が紹介されています。 それは、文字列として読み込まれる為に外部テキストファイルの内容を許容します。

  • パターン内の変数の利用における制限とキー定義が削除されています。;それらの位置では、より多くの一般的な循環性を防ぐ制限のステートメントが公式化されています。 current関数は、現在もパターン内で利用される場合があります。

  • 要素と文書ノードにおけるビルトイン(組み込み)テンプレートは、現在もそれらが呼ぶテンプレート上にあるいくつかの提供したパラメータ値を経ます。

  • format-number関数の詳細な仕様は、現在提供され、Java JDK 1.1にある仕様上の依存は削除されています。

J.2.4 提案勧告からの変更点

次に続く変更点は、提案勧告の出版物から作成されています。 それぞれの変更点は、その議論と論理的根拠、例えば、W3C public Bugzilla データベース内にある論争番号関連への参照をを含みます。

  • 15.1 [xsl:analyze-string]命令では、段落は、明確にされる命令の許容した内容を記述しています。 (「両方の要素は、付加的で1回以上出現する事は決してありません。」というすっきりしない文章が考えられました。). この編集上の変更点は、勧告候補フェーズ中に作られたパブリックコメントへの回答の中で作成されました。

  • 19 最終結果ツリーの中でそれは、ゼロ以上の結果ツリーで構成される変換の結果という状態に置かれます。; 2.4 変換を実行する中は、1つ以上で構成される状態を(正しく)保持します。 先のステートメントは、加筆されています。 参照(クロスリファレンス)は、2つのセクション間で説明する為に追加されています。(Bugzilla 4031)

  • 例にあるいくつかの平凡なシンタックスエラーは、固定されています。(Bugzilla 4149)

提案勧告は、この仕様の開発中に準備した作成したワーキングドラフトの完全なリストを含み、変更点の詳細な履歴は、それぞれのドラフトに表示する変更ログを見る事によって組み立てられる場合があります。 ドラフトのほとんどにおいて、バージョンは、変更点が視覚的にハイライトされる中で(されるので確認する事が)可能です。


ホーム前へ次へ