>サイトトップへ >このカテゴリの一覧へ

X 4177-3:2008 ISO/IEC 19757-3:2006

(1)

目  次

ページ

序文 

1

0  導入

1

1  適用範囲

2

2  引用規格

2

3  用語及び定義 

3

4  記法

5

4.1  XPath

5

4.2  述語論理 

5

5  構文

6

5.1  整形式である 

6

5.2  名前空間 

6

5.3  空白

6

5.4  核となる要素 

6

5.5  付随的な要素及び属性 

12

6  意味

13

6.1  検証関数 

13

6.2  最小の構文 

14

6.3  スキーマの意味

14

6.4  検索言語結合 

15

6.5  順序及び副作用

16

7  適合性

16

7.1  単純な適合性 

16

7.2  完全な適合性 

16

附属書 A(規定)Schematron のための RELAX NG スキーマ 

18

附属書 B(規定)追加制約用の Schematron スキーマ 

24

附属書 C(規定)省略時の検索言語結合 

26

附属書 D(参考)Schematron 検証報告言語

27

附属書 E(参考)設計要件

34

附属書 F(規定)語い(彙)としての Schematron の使用 

35

附属書 G(参考)多言語スキーマのための Schematron の用法

36

参考文献

37

 


 
X 4177-3:2008 ISO/IEC 19757-3:2006

(2)

まえがき

この規格は,工業標準化法第 12 条第 1 項の規定に基づき,財団法人日本規格協会(JSA)から,工業標準

原案を具して日本工業規格を制定すべきとの申出があり,日本工業標準調査会の審議を経て,経済産業大

臣が制定した日本工業規格である。

この規格は,著作権法で保護対象となっている著作物である。

この規格の一部が,特許権,出願公開後の特許出願,実用新案権又は出願公開後の実用新案登録出願に

抵触する可能性があることに注意を喚起する。経済産業大臣及び日本工業標準調査会は,このような特許

権,出願公開後の特許出願,実用新案権又は出願公開後の実用新案登録出願に係る確認について,責任は

もたない。

JIS X 4177 の規格群には,次に示す部編成がある。

JIS

X

4177-1  第 1 部:概要(予定)

JIS

X

4177-2  第 2 部:正規文法に基づく妥当性検証−RELAX NG

JIS

X

4177-3  第 3 部:規則に基づく妥当性検証−Schematron

JIS

X

4177-4  第 4 部:名前空間に基づく検証委譲言語−NVDL


日本工業規格

JIS

 X

4177-3

:2008

(ISO/IEC 19757-3

:2006

)

文書スキーマ定義言語(DSDL)−

第 3 部:規則に基づく妥当性検証−Schematron

Document Schema Definition Languages (DSDL)

Part 3: Rule-based validation Schematron

序文 

この規格は,2006 年に第 1 版として発行された ISO/IEC 19757-3 を基に,技術的内容及び対応国際規格

の構成を変更することなく作成した日本工業規格である。

導入 

JIS X 4177 規格群は,拡張可能なマーク付け言語(XML) 1.0 文書又は文書記述言語(SGML)文書に対して

適用される一つ以上の検証プロセスを指定するために使用することができる一群の文書スキーマ定義言語

(DSDL)を定義する(XML は,SGML ISO 8879:1986 の応用プロファイルである。)。

文書モデルは,

モデルに照らして検証される文書の構造及び内容に課される制約を表現したものとする。

ISO 8879 の一部として文書型定義(DTD)が開発されて以来,多くの技術が様々な正式・非公式のコンソー

シアムによって開発されている。特に,World Wide Web Consortium (W3C)及び Organization for the

Advancement of Structured Information Standards (OASIS)は,その顕著な例である。規格として既に存在する

か又は産業界から既に提供されている検証技術を補完するため,多くの検証技術が DSDL の一部として規

格化されている。

ある構造化文書が,構造及び内容についての指定された制約に従うことを検証しておけば,この文書を

扱う潜在的に多くの応用プログラムは,それらの要求が満たされているかどうかを確かめるという仕事を

繰り返し行うことから解放される。歴史上,そのような課題及び表現は独立に開発・利用され,単独で利

用されてきたが,他の技術で利用可能な特徴及び機能が検証という目的にどう役立つかが考慮されていな

い。

JIS X 4177 規格群の主な目的は,検証に関連する幾つもの課題と表現とが一つの拡張可能な枠組みを構

成するように位置付けることにある。この枠組みによって,幾つかの技術が順番に又は並列に動作して,

一つの又は一群の検証結果をもたらす。DSDL の拡張性によって,まだ設計も制定もされていない検証技

術に対応することができる。

従来は,設計及び利用に関する基準が違えば,利用者は,情報の一部に対して別の検証技術を選ぶ必要

があった。単一の XML 文書に情報を集中させると,既存の文書モデルを用いてデータの一部を検証する

妨げになることもあった。一つの XML 文書の部分部分に適用できる幾つかの制約記述言語を JIS X 4177

規格群が統合することによって,幾つかの検証技術を明確な検証方針の下で統合することが可能になる。

この規格は,Schematron 表明言語

[1]

に基づく。let 要素は,XCSL

[2]

に基づく。他の機能は,様々のプログ

ラミング言語で早期に書かれた Schematron のオープンソース実装(半ダース存在する。

,又は Schematron



X 4177-3:2008 ISO/IEC 19757-3:2006

使用者及び実装者のための電子フォーラムにおける議論に由来する。

この規格の構成を,次に示す。箇条 は,ISO Schematron スキーマの構文を規定する。箇条 は,正し

い ISO Schematron スキーマの意味を規定する。すなわち,文書が ISO Schematron スキーマに照らして妥当

であるのはどのようなときかを規定する。箇条 は,ISO Schematron 検証器の実装についての適合性条件

を規定する。

附属書 A(規定)は,ISO Schematron のための JIS X 4177-2 (RELAX NG)スキーマを規定す

る。

附属書 B(規定)は,ISO Schematron の中の制約であって,附属書 のスキーマによって表現できな

いものを扱う ISO Schematron スキーマを与える。

附属書 C(規定)は,省略時の検索言語結合として JIS X 

4169 への結合を規定する。附属書 D(参考)は,単純な XML 言語である Schematron 検証報告言語につい

て,JIS X 4177-2 スキーマ(RELAX NG の簡潔構文によるもの)及び対応する ISO Schematron スキーマを

示す。

附属書 E(参考)は,ISO Schematron の設計の基となった要求事項を示す。附属書 F(規定)は,

ある Schematron 要素を外部の語い(彙)の中で使用する方法を示す。

附属書 G(参考)は,多言語スキー

マの単純な例を示す。

文書型としてみると,Schematron スキーマは,文書についての自然言語による表明を含む。これらの表

明は様々の要素及び属性によってマーク付けされており,これらの自然言語表明を判定すること,及び表

明を単純化しグループ化することができる。

理論的にみると,Schematron スキーマは,連鎖しない規則システムである。規則の項は,インスタンス

及び他の XML 文書への外部の検索言語を起動するブール関数である。記述量を小さくし,効率的な実装

を可能にするための構文機能が提供されている。

分析的にみると,Schematron は,パターン及びフェーズという二つの特徴的な高位の抽象概念をもつ。

これらの概念によって,JIS X 4177-2 では表現ができない非正規又は不連続な制約を表現すること,及び

様々の動的又は偶発的な制約を表現することができる。

適用範囲 

この規格は,XML のためのスキーマ言語 Schematron について規定する。この規格は,Schematron スキ

ーマに求められる要件を確定する。また,XML 文書が Schematron スキーマによって指定されたパターン

と合致するのはどのようなときかを規定する。

注記  この規格の対応国際規格及びその対応の程度を表す記号を,次に示す。

ISO/IEC 19757-3:2006,Information technology−Document Schema Definition Languages (DSDL)−

Part 3: Rule-based validation−Schematron (IDT)

なお,対応の程度を表す記号(IDT)は,ISO/IEC Guide 21 に基づき,一致していることを示す。

引用規格 

次に掲げる規格は,この規格に引用されることによって,この規格の規定の一部を構成する。これらの

引用規格のうちで,西暦年を付記してあるものは,記載の年の版を適用し,その後の改正版(追補を含む。

には適用しない。西暦年の付記がない引用規格は,その最新版(追補を含む。

)を適用する。

注記  次の文書のそれぞれには,本文中で参照するための一意の識別子が付与されている。一意の識

別子は,太字で示した名称とする。

JIS X 4159:2005  拡張可能なマーク付け言語(XML) 1.0

注記 W3C 勧告,Extensible Markup Language (XML) 1.0 (Third Edition),2004 年 2 月 4 日が,この規


3

X 4177-3:2008 ISO/IEC 19757-3:2006

格に一致している。この W3C 勧告は,http://www.w3.org/TR/2004/REC-xml-20040204/から入

手可能である。

JIS X 4160:2007  XML パス言語(XPath) 1.0

注記 W3C 勧告,XML Path Language (XPath) Version 1.0,1999 年 11 月 16 日が,この規格に一致し

ている。この W3C 勧告は,http://www.w3.org/TR/1999/REC-xpath-19991116 から入手可能であ

る。

JIS X 4169:2007  XSL 変換(XSLT) 1.0

注記 W3C 勧告,XSL Transformations (XSLT) Version 1.0,1999 年 11 月 16 日が,この規格に一致し

ている。この W3C 勧告は,http://www.w3.org/TR/1999/REC-xslt-19991116 から入手可能である。

JIS X 4177-2:2007  文書スキーマ定義言語(DSDL)−第 2 部:正規文法に基づく妥当性検証−RELAX

NG

注記  対応国際規格:ISO/IEC 19757-2:2003,Information technology−Document Schema Definition

Language (DSDL)−Part 2: Regular-grammar-based validation−RELAX NG 及び Amendment 1:

2006 (IDT)

用語及び定義 

この規格で用いる主な用語及び定義は,次による。

3.1 

抽象パターン(abstract pattern) 

規則中のパターンであって,再利用を可能にするためパラメタ化されたもの。

3.2 

抽象的な規則(abstract rule) 

他の規則に含めることができるが,それ自身が起動されることはない表明の集まり。

3.3 

活性パターン(active pattern) 

活性フェーズに属するパターン。

3.4 

活性フェーズ(active phase) 

一つのフェーズであり,それに属するパターンが検証に用いられているもの。

3.5 

表明(assertion) 

自然言語による表明であり,対応する表明試験及び補助属性をもつ。表明は,assert 要素及び report 要素

によってマーク付けされる。

3.6 

表明試験(assertion test) 

ブール値を返す検索によってモデル化され,実装される表明。表明試験は,成功又は失敗のいずれかに

分けられる。

3.7 

正しいスキーマ(correct schema) 



X 4177-3:2008 ISO/IEC 19757-3:2006

この規格に規定する要件をすべて満たすスキーマ。

3.8 

診断(diagnostic) 

名前をもち,自然言語で書かれた文であって,期待される値及び実際の値に関する情報を検証器の末端

利用者に与え,更にどう改定すべきか示唆するもの。

3.9 

精密規則文脈式(elaborated rule context expression) 

単一の規則文脈式であり,同一のパターン内の先行する規則文脈によって選択されるアイテムを,明示

的に禁止するもの。

3.10 

良好なスキーマ(good schema) 

正しいスキーマであって,その検索が常に終了し,自然言語による表明による制約以上のものを付け加

えていないもの。

注記  スキーマが良好かどうかは計算できないかもしれない。

3.11 

実装(implementation) 

Schematron 検証器の実装。

3.12 

名前(name) 

空白文字を含まない名前トークン。

3.13 

自然言語による表明(natural-language assertion) 

パターンのある部分を表現する自然言語文。自然言語による表明は,

“満たされる(met)”又は“満たさ

れない(unmet)”のいずれかになる。

3.14 

パターン(pattern) 

インスタンス中の名前付けられた構造であり,スキーマ中では,順序付けられた規則の集まりによって

指定されるもの。

3.15 

フェーズ(phase) 

パターンの集まりであって名前をもち,順序をもたないもの。パターンは一つ以上のフェーズに属して

もよい。二つの名前#ALL 及び#DEFAULT は,特別の意味で予約されている。

3.16 

段階的検証(progressive validation) 

段階的に行われる制約検証。

段階は,ある程度スキーマの作成者が決定しグループ化するものであって,

文書構造内の順序などによって完全に定まるものではない。

3.17 

検索言語結合(query language binding) 

特別の Schematron 実装が表明試験,規則文脈式などにおいて使用する言語及び取決めの名前付けられた


5

X 4177-3:2008 ISO/IEC 19757-3:2006

集まりであって,

“検索言語結合”と呼ばれる文書中で指定されるもの。

注記 1 Schematron はフレームワークとして定義されており,省略時の検索言語結合をもつが,他の

検索言語結合も可能である。

注記 2  6.4 は,検索言語結合に要求される情報を指定し,附属書 は,Schematron のための,省略

時の検索言語を定義する。

3.18 

規則(rule) 

規則文脈式及び付随的な属性を備えた表明の順序をもたない集まり。

3.19 

規則文脈(rule context) 

要素又は他の情報アイテムであって,表明試験に使用されるもの。規則は,情報アイテムが規則文脈と

合致するときに発火する。

3.20 

規則文脈式(rule-context expression) 

主題を指定する検索式。規則文脈が情報アイテムと合致するのは,同じパターン中の先行する規則文脈

式とその情報アイテムとが合致せず,検索式が指定する情報アイテムの一つがその情報アイテムであると

きとする。

3.21 

スキーマ(schema) 

XML 文書の集合の記述。

3.22 

主題(subject) 

自然言語による表明が扱う対象に対応する特定の情報アイテムであり,通常は規則の文脈式と合致する。

3.23 

スキーマに照らして妥当(valid with respect to a schema) 

スキーマによって記述される XML 文書集合に属すること。すなわち,活性パターンの規則のうち発火

したものいずれについても,その表明試験が失敗しない場合とする。

3.24 

変数(variable) 

固定された値であって,親スキーマ,親フェーズ,親パターン又は親規則内で評価され,親スキーマ,

親フェーズ,親パターン又は親規則を有効範囲とするもの。

記法 

4.1 XPath 

この規格は,Schematron スキーマ中の情報アイテムを特定するために JIS X 4160 (XPath)を使用する。

4.2 

述語論理 

この規格は,Schematron スキーマの意味を示すために述語論理を使用する。6.3 で使用する次の記号を

定義する。

a) ()



X 4177-3:2008 ISO/IEC 19757-3:2006

グループ化のための区切り子。

b)  ∀

全称記号。前置演算子。

c) ¬

否定記号。前置演算子。

d)  ∈

集合操作の意味での帰属関係。2 項演算子。

e)  ,

連言。2 項演算子。

f) :

内延的定義における条件。2 項演算子。

g)  ⇔

同値。2 項演算子。

構文 

5.1 

整形式である 

Schematron スキーマは,使用される XML の版に従う整形式の XML 文書とする。

5.2 

名前空間 

Schematron のための文法中で示される要素はすべて,次の名前空間 URI で修飾されている。

http://purl.oclc.org/dsdl/schematron

以降では,接頭辞 sch は Schematron 名前空間 URI に結び付けられているものとして説明する。接頭辞 sch

を,この規格では予約していないし必要としてもいない。

いかなる要素も,文法中で示される属性に加えて外来の属性をもつことができる。外来の属性は,名前

空間 URI が空のストリングでも Schematron 名前空間 URI でもない名前をもつ属性とする。空でないどの

要素も,文法中で示される子要素に加えて外来の子要素をもってもよい。外来の要素は,名前空間 URI が

Schematron 名前空間 URI でない名前をもった要素とする。外来の子要素には,他の子要素との相対的な位

置についての制約はない。

5.3 

空白 

どの要素も,空白文字だけからなる文字列をもつことができる。ここで,空白文字とは,U+0020,U+0009,

U+000D 又は U+000A の一つとする。空白文字列には,他の子要素との相対的な位置についての制約はな

い。

注記  この規格が規定する属性からは,先頭の空白と末尾の空白とを取り去ることが望ましい。この

規格が規定する要素であってテキストをもつものにおいては,連続する空白文字を一つにまと

めることが望ましい。この規格が規定する要素であってテキストをもたないものからは,空白

を取り除いてもよい。

5.4 

核となる要素 

Schematron 要素用の文法は,附属書 に示されている。

5.4.1 active 要素 

必す(須)の pattern 属性は,現在のフェーズにおける活性パターンを参照する。


7

X 4177-3:2008 ISO/IEC 19757-3:2006

5.4.2 assert 要素 

文脈ノードに関しての表明。データ内容は,自然言語による表明とする。必す(須)の test 属性は,現

在の文脈で評価される表明試験とする。試験の結果が肯定的であれば,表明は成功する。省略可能な

diagnostics 属性は,付加的な診断情報を参照する。

自然言語による表明は,制約を肯定的に述べた文とする。

注記  自然言語による表明は,期待値に加えて実効値に関する情報を含んでいるかもしれないし,診

断情報を含んでいるかもしれない。しかし,そのような情報のために diagnostic 要素が提供さ

れていて,自然言語による表明を明確に述べることが推奨されていることに,利用者は注意す

ることが望ましい。

icon 属性,see 属性及び fpi 属性は,強力なインタフェース及び文書化を可能にする。これらは後に定義

する。

flag 属性は,より多くの詳細な結果を可能にする。これは後に定義する。

role 属性及び subject 属性は,パターンの一部を明示的に指定することができる。これらは後に定義する。

5.4.3 extends 要素 

抽象的な規則は,文脈式のない表明の,名前をもたない並びとする。必す(須)の rule 属性は,抽象的

な規則を参照する。現在の規則は,それが拡張する抽象的な規則からすべての表明を受け継ぐ。

5.4.4 include 要素 

必す(須)の href 属性は,外部の整形式 XML 文書を参照する。この XML 文書の文書要素は,スキー

マの現在の位置において Schematron 文法が許す Schematron の要素とする。外部文書は include 要素の代わ

りに挿入される。

5.4.5 let 要素 

名前をもつ変数の宣言。let 要素が rule 要素の子であるとき,変数は現在の規則及び文脈を用いて計算

し,現在の規則及び文脈を有効範囲とする。そうでなければ,変数は,インスタンス文書の根を文脈とし

て計算される。

必す(須)の name 属性は,変数の名前とする。必す(須)の value 属性は,現在の文脈で評価される式

とする。

現在のスキーマ,フェーズ,パターン又は規則に定義されていない変数を参照することは誤りとする。

検索言語結合が,これを信頼性をもって定義できるときでも同様とする。現在のスキーマ,フェーズ,パ

ターン及び規則において,変数が複数回定義されることは誤りとする。

変数は,同じ規則の表明試験又は他の式を評価する前に,

その表明試験及び他の式において代入される。

検索言語結合は,変数への言及を検出するために,どのような字句上の取決めを用いるかを指定する。

実装は,schema 要素の下の let 要素によって指定されたトップレベルの変数の値を上書きする機構を提

供してもよい。例えば,実装は,トップレベルの変数をコマンドラインで指定可能にしてもよい。提供さ

れる値は式ではなく,文字列又はデータオブジェクトとする。

5.4.6 name 要素 

より明りょう(瞭)な表明及び診断を行うために,インスタンス文書中のノードの名前を提供する。path

属性(省略可能)は,現在の文脈で評価され,ノードの名前である文字列を返す式とする。後者の場合に

は,ノードの名前を使用する。

自然言語による表明を報告しない実装は,この要素を利用することは要求されない。



X 4177-3:2008 ISO/IEC 19757-3:2006

5.4.7 ns 要素 

名前空間接頭辞及び URI の指定。必す(須)の prefix 属性は,コロン文字を含まない XML 名とする。

必す(須)の uri 属性は名前空間 URI とする。

注記  名前として許可された文字は,JIS X 4159:2005 以降の版の XML では変わるかもしれないの

で,Schematron のための JIS X 4177-2(RELAX NG 簡潔構文)のスキーマは,接頭辞を特別の

文字に制限はしない。

ISO Schematron スキーマでは,文脈式,表明試験及び他の検索式における名前空間接頭辞は,この要素

によって提供される名前空間結合を用いることが望ましい。名前空間接頭辞は,要素及び属性名のために

有効な名前空間結合を用いないことが望ましい。

5.4.8 param 要素 

名前と値との対であり,抽象パターンにパラメタを提供するもの。必す(須)の name 属性はコロンの

ない XML 名とする。必す(須)の value 属性は,検索式の素片とする。

5.4.9 pattern 要素 

単純なことも複雑なこともある構造。何らかの意味で関連する一群の制約を記述する規則の集合。id 属

性は,パターンの一意の名前を指定するものであり,抽象パターンには必す(須)とする。

title 要素及び p 要素によって,十分な文書化をすることができる。

icon 属性,see 属性及び fpi 属性によって,十分なインタフェース機能を備えること,及び十分な文書化

をすることができる。

pattern 要素が,値 true の abstract 属性をもつ場合,その pattern 要素は抽象パターンを定義する。抽象パ

ターンは is-a 属性をもたず,id 属性をもつものとする。

抽象パターンは,異なる名前及びパスをもつ本質的には同じ様々の構造に対して,それらに共通の定義

をするための機構とする。例えば,様々の表マーク付け言語が存在するが,それらはすべて,抽象パター

ンによって大部分を記述できる。省略時の検索言語結合を用いて次の例で定義されるとおりに,表は行を

もち,行はエントリをもつ。

<sch:pattern abstract="true" id="table">

  <sch:rule

context="$table">

   <sch:assert

test="$row">

The element <name/> is a table. Tables contain rows.

   </sch:assert>

  </sch:rule>

  <sch:rule

context="$row">

   <sch:assert

test="$entry">

The element <name/> is a table row. Rows contain entries.

   </sch:assert>

  </sch:rule>

 </sch:pattern>

pattern 要素が,抽象パターンの名前を指定する値を備えた属性 is-a をもつ場合,このパターンは抽象パ


9

X 4177-3:2008 ISO/IEC 19757-3:2006

ターンのインスタンスとする。そのようなパターンは rule 要素を含んではならないが,抽象パターンの中

で使用されるすべてのパラメタ用の param 要素をもたなければならない。

次の例は,表を扱う上記の抽象パターンを用いて,別の名前と構造とをもつ表を扱う三つのパターンを

作成している。

<sch:pattern is-a="table" id="HTML_Table">

<sch:param name="table" value="table"/>

<sch:param name="row" value="tr"/>

<sch:param name="entry" value="td|th"/>

 </sch:pattern>

<sch:pattern is-a="table" id="CALS_Table">

<sch:param name="table" value="table"/>

<sch:param name="row" value=".//row"/>

<sch:param name="entry" value="cell"/>

 </sch:pattern>

<sch:pattern is-a="table" id="calendar">

<sch:param name="table" value="calendar/year"/>

<sch:param name="row" value="week"/>

<sch:param name="entry" value="day"/>

 </sch:pattern>

抽象パターンのインスタンスを作成するとき,param 要素によって与えられたパラメタ値は,抽象パタ

ーンの中で使用されるパラメタ参照を置き換える。上記の例は,省略時の検索言語結合を用いているが,

文字$はパラメタ参照を表す区切り子として使われている。

したがって,5.4.9 の先頭で定義した抽象パターンが存在すれば,上で定義したパターンは,次のものと

等価になる。ただし,id 要素は展開される。

 <sch:pattern

id="HTML_table">

  <sch:rule

context="table">

   <sch:assert

test="tr">

The element table is a table. Tables containing rows.

   </sch:assert>

  </sch:rule>

  <sch:rule

context="tr">

   <sch:assert

test="td|th">

The element tr is a table row. Rows contain entries.

   </sch:assert>

  </sch:rule>

 </sch:pattern>


10 
X 4177-3:2008 ISO/IEC 19757-3:2006

 <sch:pattern

id="CALS_table">

  <sch:rule

context="table">

   <sch:assert

test=".//row">

The element table is a table. Tables containing rows.

   </sch:assert>

  </sch:rule>

  <sch:rule

context=".//row">

   <sch:assert

test="cell">

The element row is a table row. Rows contain entries.

   </sch:assert>

  </sch:rule>

 </sch:pattern>

 <sch:pattern

id="calendar">

  <sch:rule

context="calendar/year">

   <sch:assert

test="week">

The element year is a table. Tables containing rows.

   </sch:assert>

  </sch:rule>

  <sch:rule

context="week">

   <sch:assert

test="day">

The element week is a table row. Rows contain entries.

   </sch:assert>

  </sch:rule>

 </sch:pattern>

5.4.10 phase 要素 

スキーマにおける様々の変種に名前を付けて宣言するため,幾つかのパターンをグループ化したもの。

例えば,段階的検証を提供するために用いる。必す(須)の id 属性は,フェーズの名前とする。実装は,

文書を検証するためにどのフェーズを使用するかを,例えば,利用者が発行するコマンドに従って,決定

する。

二つの名前(#ALL 及び#DEFAULT)は,特別の意味をもつ。名前#ALL は,予約されており,パターン

がすべて活性であることを示すために実装によって利用できる。名前#DEFAULT は,予約されており,

schema 要素の defaultPhase 属性で与えられた名前を使用することが望ましいことを示すために実装によっ

て利用できる。defaultPhase が指定されない場合,すべてのパターンは活性とする。

注記  名前#ALL 及び#DEFAULT は Schematron スキーマの中で使用しないものとする。これらの名前

は,スキーマ検証を起動する又は設定するとき,例えば,コマンドラインにおけるパラメタと

して利用する。

icon 属性,see 属性及び fpi 属性によって,十分なインタフェース機能を備えること,及び十分な文書化

をすることができる。

5.4.11 report 要素 


11

X 4177-3:2008 ISO/IEC 19757-3:2006

文脈ノードに関しての表明。データ内容は,自然言語による表明とする。必す(須)の test 属性は,現

在の文脈で評価される表明試験とする。試験の結果が肯定的であれば,報告は成功する。省略可能な

diagnostics 属性は,付加的な診断情報を参照する。自然言語による表明は,発見されたパターンについて

の肯定的な文,又は制約についての否定的な文とする。

注記  自然言語表明は,期待値に加えて実効値に関する情報を含んでいるかもしれないし,診断情報

を含んでいるかもしれない。しかし,そのような情報のために diagnostic 要素が提供されてい

て,自然言語による表明を明確に述べることが推奨されていることに,利用者は注意すること

が望ましい。

icon 属性,see 属性及び fpi 属性は,強力なインタフェース及び文書化を可能にする。これらは後に定義

する。

flag 属性はより多くの詳細な結果を可能にする。これは後に定義する。

role 属性及び subject 属性は,パターンの一部を明示的に指定することができる。これらは後に定義する。

5.4.12 rule 要素 

幾つかの表明をまとめたものであり,必す(須)の context 属性によって指定された文脈において試験さ

れる。context 属性は,規則文脈式を指定する。

注記  文書に対して規則が絶対に発火しなくても誤りではない。文書が何らかの文脈を必ずもつかど

うか確認するには,文書の文脈から新しいパターンを作成し,要素又は属性を必要とする表明

をもたせることが望ましい。

icon 属性,see 属性及び fpi 属性は,強力なインタフェース及び文書化を可能にする。

flag 属性はより多くの詳細な結果を可能にする。これは後に定義する。

role 属性及び subject 属性は,パターンの一部を明示的に,検証結果の一部として指定することができる。

これらは後に定義する。

値 true の abstract 属性を rule 要素がもつとき,この規則は抽象的な規則とする。抽象的な規則は,context

属性をもってはならない。抽象的な規則は,幾つかの表明の集まりであって,同一のパターンに属する他

の規則は extends 要素を用いて抽象的な規則を起動する。抽象的な規則はスキーマを小さくするための機

構を提供する。

5.4.13 schema 要素 

Schematron スキーマのトップレベルの要素。

省略可能な schemaVersion 属性は,スキーマの版を指定する。許容される属性値は,この規格では定義

しない。また,この属性の使用は,実装依存とする。

省略可能な queryBinding 属性は,用いられている検索言語結合の短縮名を指定する。この属性が指定さ

れる場合,現在の実装が提供していない値を指定しているときは誤りとする。

明示的に利用者が情報を与えないときに使用するフェーズを示すため,defaultPhase 属性を用いてもよい。

title 要素及び p 要素によって,十分な文書化をすることができる。

icon 属性,see 属性及び fpi 属性によって,十分なインタフェース機能を備えること,及び十分な文書化

をすることができる。

5.4.14 value-of 要素 

より明りょう(瞭)な表明及び診断を行うため,インスタンス文書から値を見つける又は計算する。必

す(須)の select 属性は,現在の文脈の中で評価される式であり,文字列を返す。


12 
X 4177-3:2008 ISO/IEC 19757-3:2006

select 属性での変数の参照は,現在のスキーマ,フェーズ,パターン及び規則を有効範囲として解決す

る。

自然言語による表明を報告しない実装は,この要素を利用する必要はない。

5.5 

付随的な要素及び属性 

5.5.1 diagnostic 要素 

自然言語によるメッセージであり,失敗した表明についての具体的な詳細を与えるもの。例えば,見つ

かった値と期待される値との対比,修正についてのヒントなど。

注記  複数の言語による診断メッセージを提供するには,各言語ごとに diagnostic 要素を設け,適切

な xml:lang 言語属性を指定し,すべての diagnostic 要素の一意の識別子を表明の diagnostics 属

性によって参照する。

附属書 は,複数の言語によるスキーマの単純な例を示す。

実装は,この要素を使用しなくてもよい。

5.5.2 diagnostics 要素 

個々の diagnostic 要素を含むセクション。

実装は,この要素を使用しなくてもよい。

5.5.3 dir 要素 

value 属性によって指定された方向の自然言語テキストのセクション。値 ltr は左から右のテキストであ

ることを示し,値 rtl は右から左のテキストであることを示す。

実装は,この要素を使用しなくてもよい。

5.5.4 emph 要素 

テキストのうち,強調表示することが望ましい部分。

実装は,この要素を使用しなくてもよい。

5.5.5 flag 属性 

初期値 false を備えたブール変数。フラグは,その名前を指定する flag 属性をもつ表明又は規則によって

暗黙に宣言される。フラグの値が真になるのは,そのフラグをもつ表明が失敗するとき,又はそのフラグ

を備えた規則が発火するときとする。

フラグは,後のプロセスに状態又は深刻さに関する情報を伝えることを目的とする。

実装は,この要素を使用しなくてもよい。

5.5.6 fpi 属性 

スキーマ,フェーズ又は他の要素のための公開識別子。

実装は,この属性を利用する必要はない。

5.5.7 icon 属性 

この属性をもつ要素の深刻さ,重要性又は他のグループ化を視覚的に表現する図形ファイルの位置。

実装は,この属性を利用する必要はない。

5.5.8 p 要素 

親要素の保守者及び利用者情報を含む自然言語テキストの段落。スキーマは,はっきり目立つように表

示されることが望ましい段落を指定することができる。段落は,class 属性によって分類される。

実装は,この要素を利用する必要はない。

5.5.9 role 属性 

表明の機能,又はパターンにおける文脈ノードの機能について記述する名前。表明が subject 属性をもつ


13

X 4177-3:2008 ISO/IEC 19757-3:2006

とき,subject 属性で指定されるパス式とマッチするノードと文脈ノードとの間の関係を,この属性は説明

する。

実装は,この属性を利用する必要はない。

5.5.10 see 属性 

スキーマの保守者及び利用者についての外部情報の URI。

実装は,この属性を利用する必要はない。

5.5.11 span 要素 

段落のうち,はっきり目立つように表示されることが望ましい部分であり,class 属性によって分類され

るもの。

実装は,この要素を利用する必要はない。

5.5.12 subject 属性 

ノードのより正確な指定を可能にするパス。パス式は,現在の規則の文脈ノードを文脈として評価する。

subject 属性が指定されていないとき,現在の主題ノードを用いてもよい。

注記  特別の表明試験との関連で,規則文脈が便宜上又は性能上の理由で選ばれていたかもしれない

ので,subject 属性は必要である。その場合,規則文脈は主題を識別するのには役立たないかも

しれない。また,subject 属性によって見つけたノードはより役立つかもしれない。同様に,表

明試験がどのノードを試験したか表明試験から決定することは可能ではないかもしれない。そ

のような場合では,subject 属性によって見つけたノードはより役に立つかもしれない。

実装は,この属性を利用する必要はない。

5.5.13 title 要素 

スキーマ又はパターンの目的又は役割を要約したもの。利用者インタフェースの改善,又はスキーマの

文書化を目的とする。

実装は,この要素を利用する必要はない。

意味 

6.1 

検証関数 

一般的な Schematron 検証器は,

“妥当”

“妥当でない”又は“誤り”を返す関数として作用する。この

関数は,概念的に二つのステップを行う。すなわち,スキーマを最小の構文に変形したのち,インスタン

スを最小の構文に照らして試験する。

注記  この規格は,実装によって提供されるその他の情報,又は Schematron スキーマの他の用途を制

約することはない。しかし,この規格の意図は,問題を検出し修正するのに役立つことを目的

に,実際の値を含む詳細で具体的な診断メッセージを実装が提供可能にすることである。

Schematron 検証器は,次のものを入力とする関数とする。

a)  検索言語結合。

b)  スキーマ文書。

c)  検証されるインスタンス。

d)  インスタンス又はスキーマ中の情報を用いて取り出される外部 XML 文書。

e)  フェーズ名,#ALL(すべてのパターンを活性パターンとするとき),又は#DEFAULT(schema 要素の

defaultPhase 属性を使用するとき)。


14 
X 4177-3:2008 ISO/IEC 19757-3:2006

f)  スキーマが外部の変数を利用するとき,名前と値との対の並び。

6.2 

最小の構文 

後で行う意味規定を簡単にするため,次の変換ステップをスキーマに適用し,最小の構文のスキーマに

帰着させる。

a) include 要素を,リンクされた資源で置き換えることによって,include をすべて解決する。

b)  検索式を含む属性において,パラメタ参照を実際のパラメタの値と置き換えることによって,抽象パ

ターンをすべて解決する。

c) extends 要素を,それが参照する抽象的な規則の内容によって置き換えることによって,スキーマ中の

抽象的な規則をすべて解決する。

d) report 要素すべてを論理反転して assert 要素に直す。

e)  診断及び文書化に使用される要素を削除する。

結果として得られる最小の構文は,一般の構文に従う Schematron インスタンスでもある。

最小の構文は,次の XPaths を含んでいない点において,複雑な構文と異なる。

a) //sch:include

b) //sch:pattern[@abstract="true"]

c) //sch:pattern[@is-a]

d) //sch:rule[@abstract="true"]

e) //sch:extends

f) //sch:report

g) //sch:diagnostics

h) //sch:p

i) //sch:title

6.3 

スキーマの意味 

6.3 は,最小の形式へ縮退された良好なスキーマの意味を与える。

次の式は,

一つのインスタンスを文脈の集合として扱い,

一つのスキーマをフェーズの集合として扱い,

一つのフェーズをパターンの集合として扱い,一つのパターンを規則の集合として扱い,一つの規則を表

明の集合として扱う。

文書がスキーマに照らして妥当なのは,次の式が成立するときとする。

∀( context, pattern, rule, assertion):

  (

context

∈ instance,

  active-phase

∈ schema,

  pattern

∈ active-phase,

  rule

∈ pattern,

  assertion

∈ rule  :

( match ( rule, context, instance ),

∀ (previous-rule)  :

   (

previous-rule

∈ pattern,

position (previous-rule) < position( rule):


15

X 4177-3:2008 ISO/IEC 19757-3:2006

¬ match(previous-rule, context, instance)

)

  )

  )

⇔ assert ( assertion, context, instance) = true

ここで,position,match,及び assert は,次のとおりに定義されているものとする。

a) position(rule)は,集合中でのメンバの順番を表す。

b)  match(rule, context, instance)は,検索言語結合によって与えられる述語とする。

c)  assert(assertion, context, instance)は,検索言語結合によって与えられる述語とする。

注記  この注記では,上の論理式を自然言語で説明する。文書が,あるフェーズにおけるスキーマに

照らして妥当なのは,次の場合である。あるインスタンス,スキーマ及び活性フェーズの組合

せが存在し,どの文脈,パターン,規則,及び表明(文脈はこのインスタンスに属し,活性フ

ェーズはこのスキーマに属し,パターンはこの活性フェーズに属し,規則はこのパターンに属

し,表明はこの規則に属する。

)についても,次のことが成り立つ。インスタンスの文脈が規則

と一致し,文脈が同じパターンの中で以前に現れる規則と一致しないとき,表明をこの文脈で

評価すると真になる。

6.4 

検索言語結合 

検索言語結合は,次のものを提供しなければならない。

a)  一般に用いる検索言語。検索言語を識別する名前トークン。データモデル。

b)  規則文脈検索言語。規則文脈有効範囲。

c)  表明試験,ブール値に変換可能なデータ値を返す関数。

注記  検索言語名の stx,xslt,xslt1.1,exslt,xslt2,xpath,xpath2 及び xquery は,検索言語名だとい

う以上の定義はせずに予約語とする。異なる検索言語結合を使用する実装は,適切な場合には,

これらの名前のいずれかを選んで使用することを推奨する。

スキーマ言語結合は更に次のものを提供してもよい。

a)  様々な検索言語のデータモデル,データモデル間の変換,及び情報アイテムの扱い。すなわち,どの

情報アイテムが取り除かれる又は無視されるか,どの情報アイテムが誤りであるか,及びどの情報ア

イテムが使用されるかを提供する。

b) name 検索言語(文字列に変換可能なデータ値を返す関数)。

c) value-of 検索言語(文字列に変換可能なデータ値を返す関数)。

d) let 検索言語(データ値を返す関数)。

e)  変数の区切り子についての取決め。すなわち,検索式における変数の使用を認識するための区切り子

などの字句に関する取決め。

f)  抽象パターンのパラメタについての取決め。すなわち,検索式における抽象パターンのパラメタを認

識するための区切り子などの字句に関する取決め。

検索言語結合は,検索言語に特有の付随的な情報又は実用的なヒントを提供するために,他の名前空間


16 
X 4177-3:2008 ISO/IEC 19757-3:2006

の要素型を定義してもよい。

検索言語結合は,検索において必要となるどのような空白処理も指定しなければならない。

検索言語結合は,名前トークンの値へのどのような制限も指定しなければならない。

queryBinding 属性を備えたスキーマの中で指定された検索言語結合を提供しない Schematron 実装は,誤

りを起こして失敗するものとする。

6.5 

順序及び副作用 

要素が検証される順序は実装依存である。

順序が変わってもインスタンスの妥当性が変わることはない。

パターンが使用される順序は,実装依存である。順序が変わってもインスタンスの妥当性が変わること

はない。

表明が試験される順序は実装依存である。

順序が変わってもインスタンスの妥当性が変わることはない。

順序が意味をもつ要素は,rule 要素及び let 要素に限る。

rule 要素は,各パターン内における if-then-else 文と同じ役割を果たす。実装は,規則文脈式を,精密規

則文脈式に変換することによって,順序が意味をもたないようにしてもよい。

注記 1 rule 要素の振る舞いによって,複雑な文脈式を必要とする制約を,幾つかの規則に単純な式

を振り分けることが可能になる。

let 要素は,同じ規則内で前に現れる変数又は大域変数を用いてもよい。

注記 2  したがって,様々の実装戦略が可能である。

検索はすべて,純粋な関数として働く。検索は,他の検索に影響するどのような方法でもインスタンス

を変更しないものとする。この規格は,検証対象のインスタンスに情報追加をすることを指定しない。

適合性 

7.1 

単純な適合性 

単純な適合性をもつ実装は,どのような XML 文書についても,妥当である Schematron スキーマの構造

と適合しない構造をもつ場合には,そのことを報告しなければならない。

a)  妥当なスキーマは,附属書 にある制約,すなわちこの規格の規定の JIS X 4177-2(RELAX NG の簡

潔構文)スキーマの制約に適合する。 

単純な適合性をもつ実装は,どのような XML 文書及びどのような良好なスキーマについても,文書が

スキーマに照らして妥当であるかどうか決定できなければならない。

注記 1  この規格では,単純な適合性をもつ実装に対して,検証が終了するかどうか,及び検索がイ

ンスタンスの他のスキーマに照らして実現可能かどうか判定することまでは,要求していな

い。これらが判定可能かどうかは,使用される検索言語によって異なる。検索言語によって

は,正しくないと判定可能なことがある。このとき,実装は,検証の一部としてこの情報を

報告することが推奨される。

注記 2  単純な適合性をもつ実装が,附属書 に定義されている Schematron 検証報告言語を使って,

検証結果の報告をすることを,この規格では要求しない。

7.2 

完全な適合性 

完全な適合性をもつ実装は,どのような XML 文書についても,それが正しいスキーマであるかどうか

を,次の条件に従って決定できなければならない。

a)  妥当なスキーマは,附属書 にある制約,すなわち,この規格の規定の JIS X 4177-2(RELAX NG の


17

X 4177-3:2008 ISO/IEC 19757-3:2006

簡潔構文)スキーマの制約に従う。

b)  妥当なスキーマは,附属書 にある制約,すなわち,この規格の規定の ISO Schematron スキーマの制

約に従う。

c)  正しいスキーマの属性は,使われている検索言語結合において指定された文法に従う。

d)  正しいスキーマでは,どの文脈のどの変数名についても,一つの定義しか存在しない。

e) flag 属性,id 属性,name 属性,及び prefix 属性の値は,使用されている版の XML における整形式の

名前とする。

完全な適合性をもつ実装は,どのような XML 文書についても,文書がスキーマに照らして妥当である

かどうか決定できなければならない。

注記 1  検証が終了するかどうか,検索がインスタンスの他のスキーマに照らして実現可能かどうか,

完全な適合性をもつ実装が判断できることは,要求していない。これらを決定する能力は,

使用される検索言語に依存する。検索言語によっては,正しくないと判定できることがある。

このとき,実装には,検証の一部としてこの情報を報告することが推奨される。

注記 2  完全な適合性をもつ実装が,附属書 に定義されている Schematron 検証報告言語を使って検

証結果の報告をすることを,この規格では要求しない。


18 
X 4177-3:2008 ISO/IEC 19757-3:2006

附属書 A

(規定)

Schematron のための RELAX NG スキーマ

正しい Schematron スキーマは,次の JIS X 4177-2(RELAX NG の簡潔構文)スキーマに照らして妥当で

あるものとする。

#        (c)  International  Organization  for  Standardization  2005.

#       Permission to copy in any form is granted for use with conforming

#       SGML systems and applications as defined in ISO 8879

#       provided  this  notice  is  included  in  all  copies.

default namespace sch = "http://purl.oclc.org/dsdl/schematron"

namespace local = ""

start = schema

# Element declarations

schema = element schema {

    attribute  id  {  xsd:ID  }?

    rich

    attribute  schemaVersion  {  non-empty-string  }?

    attribute  defaultPhase  {  xsd:IDREF  }?

    attribute  queryBinding  {  non-empty-string  }?

    (foreign

     &  inclusion*

     &  (title?

       ns*

       p*

       let*

       phase*

       pattern+

       p*

       diagnostics?))

}

active = element active {

    attribute  pattern  {  xsd:IDREF  }


19

X 4177-3:2008 ISO/IEC 19757-3:2006

    (foreign & (text | dir | emph | span)*)

}

assert = element assert {

    attribute  test  {  exprValue  }

    attribute  flag  {  flagValue  }?

    attribute  id  {  xsd:ID  }?

    attribute  diagnostics  {  xsd:IDREFS  }?

    rich

    linkable

    (foreign & (text | name | value-of | emph | dir | span)*)

}

diagnostic = element diagnostic {

    attribute  id  {  xsd:ID  }

    rich

    (foreign & (text | value-of | emph | dir | span)*)

}

diagnostics = element diagnostics {

    foreign  &  inclusion*  &  diagnostic*

}

dir = element dir {

    attribute value { "ltr" | "rtl" }?

    (foreign  &  text)

}

emph = element emph { text }

extends = element extends {

    attribute  rule  {  xsd:IDREF  }

    foreign-empty

}

let = element let {

    attribute  name  {  nameValue  }

    attribute  value  {  string  }

}


20 
X 4177-3:2008 ISO/IEC 19757-3:2006

name = element name {

    attribute  path  {  pathValue  }?

    foreign-empty

}

ns = element ns {

    attribute  uri  {  uriValue  }

    attribute  prefix  {  nameValue  }

    foreign-empty

}

p = element p {

    attribute  id  {  xsd:ID  }?

    attribute  class  {  classValue  }?

    attribute  icon  {  uriValue  }?

    (foreign & (text | dir | emph | span)*)

}

param = element param {

    attribute  name  {  nameValue  }

    attribute  value  {  non-empty-string  }

}

pattern  =  element  pattern  {    

    rich

    (foreign  &  inclusion*  &

     (  (attribute  abstract  {  "true"  }

, attribute id { xsd:ID },

             title?

, (p*, let*, rule*))

     |  (attribute  abstract  {  "false"  }?

, attribute id { xsd:ID }?,

             title?

, (p*, let*, rule*))

     |  (attribute  abstract  {  "false"  }?

, attribute is-a { xsd:IDREF },

             attribute  id  {  xsd:ID  }?

, title?, (p*, param*))

     )

    )

}

phase = element phase {

    attribute  id  {  xsd:ID  }


21

X 4177-3:2008 ISO/IEC 19757-3:2006

    rich

    (foreign  &  inclusion*  &  (p*

, let*, active*))

}

report = element report {

    attribute  test  {  exprValue  }

    attribute  flag  {  flagValue  }?

    attribute  id  {  xsd:ID  }?

    attribute  diagnostics  {  xsd:IDREFS  }?

    rich

    linkable

    (foreign &  (text | name | value-of | emph | dir | span)*)

}

rule = element rule {

    attribute  flag  {  flagValue  }?

    rich

    linkable

    (foreign  &  inclusion*

     &  ((attribute  abstract  {  "true"  }

            attribute  id  {  xsd:ID  }

, let*, (assert | report | extends)+)

        |  (attribute  context  {  pathValue  }

            attribute  id  {  xsd:ID  }?

           attribute  abstract  {  "false"  }?

           let*

, (assert | report | extends)+)))

}

span = element span {

    attribute  class  {  classValue  }

    (foreign  &  text)

}

title = element title {

    (text  |  dir)*

}

value-of = element value-of {

    attribute  select  {  pathValue  }

    foreign-empty


22 
X 4177-3:2008 ISO/IEC 19757-3:2006

}

# common declarations

inclusion = element include {

    attribute  href  {  uriValue  }

}

rich =

    attribute  icon  {  uriValue  }?

    attribute  see  {  uriValue  }?

    attribute  fpi  {  fpiValue  }?

    attribute  xml:lang  {  langValue  }?

    attribute xml:space { "preserve" | "default" }?

linkable =

    attribute  role  {  roleValue  }?

    attribute  subject  {  pathValue  }?

foreign =

    foreign-attributes

, foreign-element*

foreign-empty =

    foreign-attributes

foreign-attributes =

    attribute * - (local:* | xml:*) { text }*

foreign-element =  element * - sch:*  {

    (attribute  *  {  text  }

     |  foreign-element

     |  schema

     |  text)*

}

# Data types

uriValue = xsd:anyURI

pathValue = string

exprValue = string


23

X 4177-3:2008 ISO/IEC 19757-3:2006

fpiValue = string

langValue = xsd:language

roleValue = string

flagValue = string

nameValue = string  # In the default query language binding

, xsd:NCNAME

classValue = string

non-empty-string = xsd:token { minLength = "1" }


24 
X 4177-3:2008 ISO/IEC 19757-3:2006

附属書 B

(規定)

追加制約用の Schematron スキーマ

正しい Schematron スキーマは,次の Schematron スキーマに照らして妥当であるものとする。

<!--

(c) International Organization for Standardization 2005.

Permission to copy in any form is granted for use with conforming

SGML systems and applications as defined in ISO 8879

provided this notice is included in all copies.

-->

<sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron"

 xml:lang="en"

>

<sch:title>Schema for Additional Constraints in Schematron</sch:title>

<sch:ns prefix="sch" uri="http://purl.oclc.org/dsdl/schematron" />

<sch:p>This schema supplies some constraints in addition to those

given in the ISO/IEC 19757-2 (RELAX NG Compact Syntax) Schema for Schematron.

 </sch:p>

 <sch:pattern>

  <sch:rule

context="sch:active">

   <sch:assert

    test="//sch:pattern[@id=current()/@pattern]">

The pattern attribute of the active element shall match the

id attribute of a pattern.

   </sch:assert>

  </sch:rule>

  <sch:rule

context="sch:pattern[@is-a]">

   <sch:assert

    test="//sch:pattern[@abstract='true'][@id=current()/@is-a]">

The is-a attribute of a pattern element shall match

the id attribute of an abstract pattern.

   </sch:assert>

  </sch:rule>

  <sch:rule

context="sch:extends">

   <sch:assert

    test="//sch:rule[@abstract='true'][@id=current()/@rule]">

The rule attribute of an extends element shall match

the id attribute of an abstract rule.


25

X 4177-3:2008 ISO/IEC 19757-3:2006

   </sch:assert>

  </sch:rule>

  <sch:rule

context="sch:let">

   <sch:assert

    test

=

"not(//sch:pattern

     [@abstract='true']/sch:param[@name=current()/@name])">

A variable name and an abstract pattern parameter should not

use the same name.

   </sch:assert>

  </sch:rule>

 </sch:pattern>

</sch:schema>


26 
X 4177-3:2008 ISO/IEC 19757-3:2006

附属書 C 
(規定)

省略時の検索言語結合

言語結合のない Schematron スキーマ又は値 xslt

(大文字及び小文字はどう用いてもよい。

の queryBinding

属性をもつ Schematron スキーマは,次の結合を使用するものとする。

a)  使用される検索言語は,JIS X 4169 の中で指定された拡張 XPath(JIS X 4160)とする。したがって,

使用されるデータモデルは,これらの規格のデータモデルになる。

b)  規則文脈は,JIS X 4169 の生成規則 1 によって解析する。規則文脈は要素,属性,コメント及び処理

命令かもしれない。

c)  表明試験は,JIS X 4160 の生成規則 14 に従って解析し,ブール値を返すものとする。

d) name 検索は,JIS X 4160 の生成規則 14 に従って解析し,文字列の値を返すものとする。通常,select

属性は,要素ノードを返す式を含む。name 検索は,ノードの値ではなく,ノードの局所名又は修飾名

を返す。

e) value-of 検索は JIS X 4160 の生成規則 14 に従って解析し,文字列の値を返すものとする。

f) let の値は JIS X 4160 の生成規則 14 によって解析し,文字列の値を返すものとする。

g)  抽象パターンのパラメタの使用を示すための表記法は,名前トークンの前に$文字を付けることとす

る。この文字は,URL 又は XPath では区切り子として現れない。有効範囲にあるパラメタ名が後続し

ない$文字は,パラメタ名前区切り子として扱ってはならない。この場合,文字$は,変数名のための

区切り子又は文字どおりの文字として用いてもよい。

h) Schematron の let 式は,JIS X 4169 の変数として扱う。JIS X 4169 における区切り子$は,文脈式,表

明試験,name 検索,value-of 検索又は let 式において,変数の使用を意味する。有効範囲にある変数の

名前が後続しない$文字は,文字どおりの文字として扱われるものとする。

JIS X 4169 の key 要素(XSLT 名前空間に属する。)は,パターン要素の前に用いてもよい。

id 属性,name 属性及び接頭辞は,文書によって使用される版の XML の,コロンをもたない名前につい

ての規則に従うことが望ましい。


27

X 4177-3:2008 ISO/IEC 19757-3:2006

附属書 D 
(参考)

Schematron 検証報告言語

D.1  記述 

Schematron 検証報告言語(SVRL)は,Schematron 検証結果の報告及び適合性試験のためのテストデータと

して用いてもよい単純な XML 言語とする。

SVRL の中の要素の順序は,実装依存とする。

実装によっては,同じ要素の集まりを別の順番で生成してもよい。

単純な検証報告言語用の文法の中で示される要素はすべて,

次の名前空間 URI で修飾されるものとする。

http://purl.oclc.org/dsdl/svrl

以降のスキーマでは,接頭辞 svrl は,単純な検証報告言語名前空間 URI に結び付けらているものとして

説明する。

接頭辞 svrl は,この規格では予約していないし必要としてもいない。

D.2 RELAX 

NG 簡潔構文のスキーマ 

<!--

(c) International Organization for Standardization 2005.

Permission to copy in any form is granted for use with conforming

SGML systems and applications as defined in ISO 8879

provided this notice is included in all copies.

-->

default namespace = "http://purl.oclc.org/dsdl/svrl"

schematron-output = element schematron-output {

attribute title { text }?

attribute phase { xsd:NMTOKEN }?

attribute schemaVersion { text }?

 human-text*

 ns-prefix-in-attribute-values*

 (active-pattern

 (fired-rule

, (failed-assert | successful-report)*)+)+

}

# only namespaces from sch:ns need to be reported

ns-prefix-in-attribute-values = element ns-prefix-in-attribute-values {

attribute prefix { xsd:NMTOKEN }

attribute uri { text }

 empty

}

# only active patterns are reported


28 
X 4177-3:2008 ISO/IEC 19757-3:2006

active-pattern = element active-pattern {

attribute id { xsd:ID }?

attribute name { text }?

attribute role { xsd:NMTOKEN }?

 empty

}

# only rules that are fired are reported

fired-rule =

element fired-rule {

attribute id { xsd:ID }?

attribute context { text }

attribute role { xsd:NMTOKEN }?

attribute flag { xsd:NMTOKEN }?

 empty

}

# only references are reported

, not the diagnostic

diagnostic-reference = element diagnostic-reference {

attribute diagnostic { xsd:NMTOKEN }

 human-text

}

# only failed assertions are reported

failed-assert = element failed-assert {

 attlist.assert-and-report

 diagnostic-reference*

 human-text

}

# only successful asserts are reported

successful-report = element successful-report {

 attlist.assert-and-report

 diagnostic-reference*

 human-text

}

human-text = element text { text }

attlist.assert-and-report = attribute id { xsd:ID }?

attribute location { text }

attribute test { text }

attribute role { xsd:NMTOKEN }?

attribute flag { xsd:NMTOKEN }?

start = schematron-output


29

X 4177-3:2008 ISO/IEC 19757-3:2006

D.3 Schematron スキーマ 

対応する Schematron スキーマは,次のとおりとする。

<!--

(c) International Organization for Standardization 2005.

Permission to copy in any form is granted for use with conforming

SGML systems and applications as defined in ISO 8879

provided this notice is included in all copies.

-->

<sch:schema

 xmlns:sch="http://purl.oclc.org/dsdl/schematron"

 xml:lang="en"

>

<sch:title>Schema for Schematron Validation Report Language</sch:title>

<sch:ns prefix="svrl" uri="http://purl.oclc.org/dsdl/svrl" />

<sch:p>The Schematron Validation Report Language is a simple language

for implementations to use to compare their conformance. It is

basically a list of all the assertions that fail when validating

  a

document

, in  any  order, together with other information such

as which rules fire.

 </sch:p>

<sch:p>This schema can be used to validate SVRL documents

, and provides

examples of the use of abstract rules and abstract patterns.</sch:p>

 <sch:pattern>

  <sch:title>Elements</sch:title>

<!--Abstract Rules -->

<sch:rule abstract="true" id="second-level">

   <sch:assert

test="../svrl:schematron-output">

The <sch:name/> element is a child of schematron-output.

   </sch:assert>

  </sch:rule>

<sch:rule abstract="true" id="childless">

   <sch:assert

test="count(*)=0">

The <sch:name/> element should not contain any elements.

   </sch:assert>

  </sch:rule>

<sch:rule abstract="true" id="empty">

   <sch:extends

rule="childless"

/>

<sch:assert test="string-length(space-normalize(.)) = 0">

The <sch:name/> element should be empty.

   </sch:assert>


30 
X 4177-3:2008 ISO/IEC 19757-3:2006

  </sch:rule>

  <!--

Rules-->

  <sch:rule

context="svrl:schematron-output">

   <sch:assert

test="not(../*)">

The <sch:name/> element is the root element.

   </sch:assert>

   <sch:assert

    test="count(svrl:text)+count(svrl:ns-prefix-in-attribute-values)+

     count(svrl:active-pattern)+

     count(svrl:fired-rule)

+

count(svrl:failed-assert)+

     count(svrl:successful-report)

=

count(*)">

<sch:name/> may only contain the following elements:

    text

, ns-prefix-in-attribute-values, active-pattern, fired-rule,

    failed-assert

and

successful-report.

   </sch:assert>

   <sch:assert

test="svrl:active-pattern">

<sch:name/> should have at least one active pattern.

   </sch:assert>

  </sch:rule>

  <sch:rule

context="svrl:text">

   <sch:extends

rule="childless"

/>

  </sch:rule>

  <sch:rule

context="svrl:diagnostic-reference">

   <sch:extends

rule="childless"

/>

<sch:assert test="string-length(@diagnostic) &gt; 0">

<sch:name/> should have a diagnostic attribute

giving the id of the diagnostic.

   </sch:assert>

  </sch:rule>

  <sch:rule

context="svrl:ns-prefix-in-attribute-values">

   <sch:extends

rule="second-level"

/>

   <sch:extends

rule="empty"

/>

   <sch:assert

    test="following-sibling::svrl:active-pattern

     or

following-sibling::svrl:ns-prefix-in-attribute-value">

A <sch:name/> comes before an active-pattern or another

    ns-prefix-in-attribute-values

element.

   </sch:assert>

  </sch:rule>


31

X 4177-3:2008 ISO/IEC 19757-3:2006

  <sch:rule

context="svrl:active-pattern">

   <sch:extends

rule="second-level"

/>

   <sch:extends

rule="empty"

/>

  </sch:rule>

  <sch:rule

context="svrl:fired-rule">

   <sch:extends

rule="second-level"

/>

   <sch:extends

rule="empty"

/>

   <sch:assert

    test="preceding-sibling::active-pattern

|

     preceding-sibling::svrl:fired-rule

|

     preceding-sibling::svrl:failed-assert

|

     preceding-sibling::svrl:successful-report">

A <sch:name/> comes after an active-pattern

, an  empty

    fired-rule

, a failed-assert or a successful report.

   </sch:assert>

<sch:assert test="string-length(@context) &gt; 0">

The <sch:name/> element should have a context attribute

    giving

the

current

context

, in simple XPath format.

   </sch:assert>

  </sch:rule>

<sch:rule context="svrl:failed-assert | svrl:successful-report">

   <sch:extends

rule="second-level"

/>

   <sch:assert

   test="count(svrl:diagnostic-reference)

+

count(svrl:text)

=

count(*)">

The <sch:name/> element should only contain a text element

and diagnostic reference elements.

   </sch:assert>

<sch:assert test="count(svrl:text) = 1">

The <sch:name/> element should only contain a text element.

   </sch:assert>

   <sch:assert

test="preceding-sibling::svrl:fired-rule

|

    preceding-sibling::svrl:failed-assert

|

    preceding-sibling::svrl:successful-report">

A <sch:name/> comes after a fired-rule

, a failed-assert or a

    successful-report.

   </sch:assert>

  </sch:rule>

<!-- Catch-all rule-->

  <sch:rule

context="*">


32 
X 4177-3:2008 ISO/IEC 19757-3:2006

   <sch:report

test="true()">

An unknown <sch:name/> element has been used.

   </sch:report>

  </sch:rule>

 </sch:pattern>

 <sch:pattern>

  <sch:title>Unique

Ids</sch:title>

  <sch:rule

context="*[@id]">

   <sch:assert

test="not(preceding::*[@id=current()/@id][1]">

Id attributes should be unique in a document.

   </sch:assert>

  </sch:rule>

 </sch:pattern>

<sch:pattern abstract="true" id="requiredAttribute">

  <sch:title>Required

Attributes</sch:title>

<sch:rule context=" $context ">

<sch:assert test="string-length( $attribute ) &gt; 0">

The <sch:name/> element should have a

<sch:value-of select="$attribute /name()" /> attribute.

   </sch:assert>

  </sch:rule>

 </sch:pattern>

 <sch:pattern

is-a="requiredAttribute">

<sch:param name="context" value="svrl:diagnostic-reference" />

<sch:param name="attribute" value="@diagnostic" />

 </sch:pattern>

 <sch:pattern

is-a="requiredAttribute">

  <sch:param

name="context"

 value="svrl:failed-assert or svrl:successful-report" />

<sch:param name="attribute" value="@location" />

 </sch:pattern>

 <sch:pattern

is-a="requiredAttribute">

  <sch:param

name="context"

value="svrl:failed-assert or svrl:successful-report" />

<sch:param name="attribute" value="@test" />

 </sch:pattern>

 <sch:pattern

is-a="requiredAttribute">

  <sch:param

name="context"

   value="svrl:ns-prefix-in-attribute-values"

/>


33

X 4177-3:2008 ISO/IEC 19757-3:2006

<sch:param name="attribute" value="@uri" />

 </sch:pattern>

 <sch:pattern

is-a="requiredAttribute">

<sch:param name="context" value="svrl:ns-prefix-in-attribute-values" />

<sch:param name="attribute" value="@prefix" />

 </sch:pattern>

</sch:schema>


34 
X 4177-3:2008 ISO/IEC 19757-3:2006

附属書 E

(参考) 
設計要件

省略時の検索言語結合を備えたスキーマ言語のための設計の要件として,次のものがある。

a)  頭部及び本体を表すパターンなどの抽象パターンを扱えること。

b)  段階的検証を提供すること。

c)  外部ファイルから表明又は抽象的な規則を取り込むこと。

d)  自然言語による文と人工言語による文との間の一対一の対応を提供すること。

e)  情報アイテム間の関係を生成し,ラベルを付けることを提供すること。

省略時の検索言語結合を備えたスキーマ言語のための設計の要件として,次のものは含まない。

a)  JIS X 4177-2 (RELAX NG)スキーマなどの文法に基づいた検証によって容易に表現できる単純な制約

指定。

b) XML のための他の標準スキーマ言語に取って代わること。

c)  単一のパス又はストリーム処理によって実現できること。

次に示す結果は,この規格の範囲外である。

a)  型システムの指定。

b)  一貫性を検査するため,複数の文書に出現する同一データの間のリンクを生成すること。


35

X 4177-3:2008 ISO/IEC 19757-3:2006

附属書 F

(規定)

語い(彙)としての Schematron の使用

次の Schematron 要素型を,他の標準及びスキーマが語い(彙)要素として用いてもよい。ただし,その

ときの要素型の意味は,この規格で規定したとおりでなければならない。

a) schema

b) pattern

c) rule

d) assert

e) report

これらの要素は,5.2 で規定された標準 Schematron 名前空間を使用することが望ましい。

スキーマ要素以外の Schematron 要素が,他の標準及びスキーマによって語い(彙)の要素として使用さ

れる場合,別の標準又はスキーマは,Schematron 要素(ns 要素又は let 要素など)によって本来は提供さ

れる情報を定義するための機構を提供することが望ましい。


36 
X 4177-3:2008 ISO/IEC 19757-3:2006

附属書 G 
(参考)

多言語スキーマのための Schematron の用法

次の Schematron スキーマは,多言語を利用した例を示す。

<sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron"

 xml:lang="en"

>

<sch:title>Example of Multi-Lingual Schema</sch:title>

 <sch:pattern>

  <sch:rule

context="dog">

   <sch:assert

test="bone"

diagnostics="d1

d2">

A dog should have a bone.

   </sch:assert>

  </sch:rule>

 </sch:pattern>

 <sch:diagnostics>

<sch:diagnostic id="d1" xml:lang="en">

A dog should have a bone.

  </sch:diagnostic>

<sch:diagnostic id="d2" xml:lang="de">

Ein Hund sollte ein Bein haben.

  </sch:diagnostic>

 </sch:diagnostics>

</sch:schema>


37

X 4177-3:2008 ISO/IEC 19757-3:2006

参考文献

[1]  Resource Description for Schematron (web page), Rick Jelliffe, Computing Centre, Academia Sinica, Taipei,

http://purl.oclc.org/dsdl/schematron

[2]  XML Constraint Specification Language, Jose Carlos Leite Ramalho, Department of Informatics, School of

Engineering, University of Minho,

http://www.di.uminho.pt/~jcr/PROJS/xcsl-www/