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

 

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 

 

 

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

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

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

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

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

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

いものを扱う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日が,この規


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実装が表明試験,規則文脈式などにおいて使用する言語及び取決めの名前付けられた


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

 

 

集まりであって,“検索言語結合”と呼ばれる文書中で指定されるもの。 

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

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

注記2 6.4は,検索言語結合に要求される情報を指定し,附属書Cは,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要素用の文法は,附属書Aに示されている。 

5.4.1 

active要素 

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


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をもつ場合,このパターンは抽象パ


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属

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

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

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) 妥当なスキーマは,附属書Aにある制約,すなわちこの規格の規定のJIS X 4177-2(RELAX NGの簡

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

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

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

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

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

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

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

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

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

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

7.2 

完全な適合性 

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

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

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


17 

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

 

 

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

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

約に従う。 

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

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

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

名前とする。 

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

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

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

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

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

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

注記2 完全な適合性をもつ実装が,附属書Dに定義されている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/