この規格ページの目次
18
X 4177-2 : 2005 (ISO/IEC 19757-2 : 2003)
(oneOrMore 2) x a1; m1 =~ p cx a2; m2 =~ <oneOrMore> p</oneOrMore> disjoint(a1,a2)
cx <group> p1 p2 </group>
a1 + a2; m1 ; m2 =~
9.3.6 interleaveパターン インタリーブの意味を次の推論規則によって規定する。
(interleaves 1) ( ) nterleaves ( ); ( )
(interleaves 2) 1 interleaves m2; m3
m4, m1 interleaves m4, m2; m3
(interleaves 3) 1 interleaves m2; m3
m4, m1 interleaves m2, m4; m3
例 <a/><a/>及び<b/>のインタリーブは,<a/><a/><b/>,<a/><b/><a/>及び<b/><a/><a/>である。
インタリーブパターンの意味を次のとおりに規定する。
(interleave) cx a1; m1 =~ p1 cx a2; m2 =~ p2 m3 interleaves m1; m2
cx a1 + a2; m3 =~ <interleave> p1 p2 </interleave>
参考 10.4にある制限は, 推論規則の結論において構築される属性集合は,同一の名前をもつ複数の
属性をもたないことを保証する。
9.3.7 elementパターン及びattributeパターン 属性の値は,常に単一の文字列とする。文字列が空であ
ってもよい。したがって,空の列は属性の値とはなり得ない。一方,要素の(一般に複数の)子は空の列
であってもよいが,空の文字列であることはない。検証が要素及び属性を統一的に扱うことを保証するた
めに,マッチの変種として弱い意味でのマッチを導入する。弱い意味でのマッチは,属性の値をパターン
にマッチさせるとき,又は(一般に複数の)属性及び要素の(一般に複数の)子をパターンにマッチさせ
るときに用いる。
弱い意味でのマッチの意味を次のとおりに規定する。
(weak match 1) cx a; m =~ p
cx a; m =~weak p
(weak match 2) cx a; ( ) =~ p
cx a; ws =~weak p
(weak match 3) cx a; "" =~ p
cx a; ( ) =~weak p
attributeパターンの意味を,次のとおりに規定する。
――――― [JIS X 4177-2 pdf 21] ―――――
19
X 4177-2 : 2005 (ISO/IEC 19757-2 : 2003)
(attribute) cx [{}]; s =~weak p n in nc
cx attribute( n, s ); ( ) =~ <attribute> nc p </attribute>
elementパターンの意味を,次のとおりに規定する。
(element) cx1 a; m =~weak p n in nc okAsChildren(m)
deref(ln) = <element> nc p </element>
cx2 [{}]; ws1, element( n, cx1, a, m ), ws2 =~ <ref name="ln"/>
9.3.8 dataパターン及びvalueパターン RELAX NGは,データ型についてはデータ型ライブラリに委
ねている。データ型ライブラリは,URIによって特定する。あるデータ型ライブラリに属するデータ型は,
NCNameによって特定する。データ型ライブラリは,次の二つの機能をもつ。
a) ある文字列が,あるデータ型において許される表現かどうかを決定することができる。この機能は,0
個以上のパラメタから成るリストを受け取る。例えば,文字列データ型は,文字列の長さを指定する
パラメタをもつかもしれない。データ型ライブラリは,各データ型に適用できるパラメタが何かを規
定する。
b) 二つの文字列が,あるデータ型の同じ値を表すかどうかを決定することができる。この機能は,パラ
メタをもたない。
いずれの機能も,文字列が現れる文脈を用いてもよい。例えば,QNameを表すデータ型は,名前空間対
応付けを用いる。
datatypeEqual関数は,反射的,推移的及び対称的でなければならない。すなわち,次の推論規則が成立
しなければならない。
(datatypeEqual reflexive) atatypeAllows(u, ln, params, s, cx)
datatypeEqual(u, ln, s, cx, s, cx)
(datatypeEqual transitive) datatypeEqual(u, ln, s1, cx1, s2, cx2)
datatypeEqual(u, ln, s2, cx3, s3, cx3)
datatypeEqual(u, ln, s1, cx1, s3, cx3)
(datatypeEqual symmetric) atatypeEqual(u, ln, s1, cx1, s2, cx2)
datatypeEqual(u, ln, s2, cx2, s1, cx1)
dataパターン及び valueパターンの意味を次のとおりに規定する。
(value) datatypeEqual(u1, ln, s1, cx1, s2, context( u2, cx2 ))
cx1 [{}]; s1 =~ <value datatypeLibrary="u1" type="ln" ns="u2" [cx2]> s2 </value>
(data 1) atatypeAllows(u, ln, params, s, cx)
cx [{}]; s =~ <data datatypeLibrary="u" type="ln"> params </data>
――――― [JIS X 4177-2 pdf 22] ―――――
20
X 4177-2 : 2005 (ISO/IEC 19757-2 : 2003)
(data 2) atatypeAllows(u, ln, params, s, cx) not(cx a; s =~ p)
cx [{}]; s =~ <data datatypeLibrary="u" type="ln"> params <except> p </except> </data>
9.3.9 組込みデータ型ライブラリ 空のURIは,特別の組込みデータ型ライブラリを特定する。このラ
イブラリは,二つのデータ型string及びtokenを提供する。いずれのデータ型もパラメタをもつことはでき
ない。
二つの組込みデータ型の意味を次のとおりに規定する。
(string allows) atatypeAllows("", "string", ( ), s, cx)
(string equal) datatypeEqual("", "string", s, cx1, s, cx2)
(token allows) datatypeAllows("", "token", ( ), s, cx)
normalizeWhiteSpace( s1 ) = normalizeWhiteSpace( s2 )
(token equal)
datatypeEqual("", "token", s1, cx1, s2, cx2)
9.3.10 listパターン listパターンの意味を次のとおりに規定する。
(list) cx [{}]; split( s ) =~ p
cx [{}]; s =~ <list> p </list>
参考 この推論規則において,パターンと照合される列は連続する幾つかの文字列を含んでもよいこ
とに注意。
9.4 妥当性
要素が妥当であるのは,この要素に空の属性集合を組合せたものが,文法のstartパターン
にマッチするときとする。
(valid) start() = p cx [{}]; e =~ p
valid(e)
10. 制限
10.1 一般事項
次に示す制約は文法が8.で規定した単純な形式に変換された後にすべて確認される。 こ
れらの制限は,利用者の誤りの検出及び実装の簡略化を目的とする。
10.2 禁止されるパス
10.では,スキーマにおいて要素が出現できる位置についてのパスを,祖先要素の
名前に基づいて規定する。これらの制限を規定するために,禁止されたパスの概念を使用する。パスは,/
又は // で区切られたNCNameの並びとなる。
a) ある要素がパスxにマッチするのは,その要素の局所名がxのときに限る。ここで,xはNCNameと
する。
b) ある要素がパスx/pにマッチするのは,この要素の局所名がxであって,この要素がpにマッチする
子をもつときに限る。ここで,xはNCNameであって,pはパスとする。
c) ある要素がパスx//pにマッチするのは,この要素の局所名がxであって,この要素がpにマッチする
――――― [JIS X 4177-2 pdf 23] ―――――
21
X 4177-2 : 2005 (ISO/IEC 19757-2 : 2003)
子孫をもつときに限る。ここで,xはNCNameであって,pはパスとする。
次に例を示す。
<foo>
<bar>
<baz/>
</bar>
</foo>
この要素は,パスfoo,foo/bar,foo//bar,foo//baz,foo/bar/baz,foo/bar//baz及びfoo//bar/bazにマッチす
るが,foo/baz又はfoobarにはマッチしない。
単純な形式に変換された後の正しいRELAX NGスキーマは,禁止されたパスにマッチする要素を含ん
ではならない。
10.2.1 attributeパターン 次に示すパスは禁止されている。
a) ttribute//ref
b) ttribute//attribute
10.2.2 oneOrMoreパターン 次に示すパスは禁止されている。
a) neOrMore//group//attribute
b) neOrMore//interleave//attribute
10.2.3 listパターン 次に示すパスは禁止されている。
a) ist//list
b) ist//ref
c) ist//attribute
d) ist//text
e) ist//interleave
10.2.4 data中のexceptパターン 次に示すパスは禁止されている。
a) ata/except//attribute
b) ata/except//ref
c) ata/except//text
d) ata/except//list
e) ata/except//group
f) data/except//interleave
g) ata/except//oneOrMore
h) ata/except//empty
参考 これはdataを親にもつexcept要素は,data要素,value要素及びchoice要素だけを含むことが
できることを意味する。
10.2.5 start要素 次に示すパスは禁止されている。
a) tart//attribute
b) tart//data
c) tart//value
――――― [JIS X 4177-2 pdf 24] ―――――
22
X 4177-2 : 2005 (ISO/IEC 19757-2 : 2003)
d) tart//text
e) tart//list
f) start//group
g) tart//interleave
h) tart//oneOrMore
i) start//empty
10.3 文字列の並び
RELAX NG は,次のパターンを許可しない。
<element name="foo">
<group>
<data type="int"/>
<element name="bar">
<empty/>
</element>
</group>
</element>
次のパターンも許可しない。
<element name="foo">
<group>
<data type="int"/>
<text/>
</group>
</element>
備考 明確さのため,直前の二つの例は単純な構文に変換していない。これは,10.3における制約が,
10.における他の制約と同様に,単純な構文に変換されたあとに検査されるという要求を変える
ものではない。
一般的に説明する。要素又は属性の内容のためのパターンが次の二つを含む場合,これら二つのパター
ンが同時に適用されることはない。
a) 子にマッチすることができるパターン(element,data,value,list 又はtextパターン)
b) 一つの文字列にマッチするパターン(data,value 又はlistパターン)
この規則は,listパターンの中に出現するパターンには適用しない。
この規則を形式化するために,内容種別の概念を用いる。要素の内容として許可されるパターンは,emtpy,
complex及びsimpleの三つの内容種別のうちの一つをもつ。
empty内容種別は,どの内容種別ともグループ化可能とする。さらに,complex内容種別は,complex内
容種別とグループ化可能とする。次に示す規則はこれを形式化している。
(group empty 1) roupable(empty( ), ct)
――――― [JIS X 4177-2 pdf 25] ―――――
次のページ PDF 26
JIS X 4177-2:2005の引用国際規格 ISO 一覧
- ISO/IEC 19757-2:2003(IDT)
JIS X 4177-2:2005の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.240 : 情報技術(IT)の応用 > 35.240.30 : 情報,ドキュメンテーション及び出版業務におけるITの応用
JIS X 4177-2:2005の関連規格と引用規格一覧
- 規格番号
- 規格名称