element 要素
要素を宣言するための要素
- 文書インスタンスの要素を定義する要素です。
- XMLでは文書インスタンス内のルート要素が文書全体に一致します。
- スキーマのルート要素にすることが出来ます。このスキーマを単独で用いる場合、文書インスタンス全体に対応します。
属性
name 属性
- 要素名を指定します。要素名は Qualified name なので、名前空間を考慮する必要があります。
- name 属性 を記述しない場合は、name要素 で指定します。
- もしくは、anyName要素 を子要素にすることで、すべての要素を許容することが出来ます。その際、except要素 を使うことで、適用すべきでない要素名を除去することも可能です。
ns 属性
指定する要素及びその子孫要素のデフォルトの名前空間 URI を指定できます。
xmlns:xxxx 属性
grammar要素 と同様、xmlns:xxxx 属性 を使用することもできます。
xmlns 属性
element要素 をルート要素とする場合は、スキーマ自体の名前空間 (http://relaxng.org/ns/structure/1.0) を宣言しなければなりません。
子ノード
- element要素 (及び element要素 を子孫に持つ choice要素 など) を入れ子にすることで、要素の包含関係を明示することが出来ます。
- その他、element要素 には、様々な要素を入れることが出来ます。通常は、choice要素, zeroOrMore要素 などのパターン制馭要素と共に用いることが多いでしょう。
- element要素 (あるいは、element要素を子孫要素に持つ choice要素 など) を並べた場合、文書インスタンス中では、element要素 の出現順序通りに要素が出現していなければなりません。
- (同じ名前空間に属する)同じ要素名の element要素 を複数異なる場所に設置することが可能です。これにより、同じ要素の入れ子を定義したり、要素の出現する場所によって異なる中身や属性を定義したりすることが出来ます。
- ref 要素を中身にし、マクロを参照することが出来ます。
使用例
例 1:
名前空間 URI http://lena.com に属する p 要素をルート要素として宣言。中身は通常のテキストデータとする。
<?xml version="1.0"?> <element name="p" ns="http:lena.com" xmlns="http://relaxng.org/ns/structure/1.0"> <text/> </element>
例 2:
p 要素 を宣言。 p 要素の中身は、 a1, a2 要素が a1, a2 の順で各一つづつ出現しなければならない。
<element name="p"> <element name="a1"><text/></element> <element name="a2"><text/></element> </element>
例 3:
book 要素を除く任意の要素において、 book 要素が一つだけ出現する。 book 要素の中身はテキスト。
<element> <anyName> <except><name>book</name></except> </anyName> <element name="book"><text/></element> </element>
参考文献
- James Clark and Makoto Murata, ISO/IEC FDIS 19757-2 Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG
- 古林 寛, 「element要素 @ ぽかぽか RELAX NG 工房」