anyName 要素
任意の要素/属性の存在を許すための要素
- ある特定の要素において、任意の名前を有する要素や属性の存在を許したい場面が存在するかも知れません(例えば、部分的な検証を行いたい場合などがそれに当たります)。そのような場合、その要素/属性の名前を anyName要素 として明示します。
- name 属性 を持たない element要素, attribute要素 の子要素として用いられます。逆に言えば、anyName要素 を子要素に持つ element要素, attribute要素 には、 name 属性 を附属させてはいけません。
属性
- この要素に固有な属性はありません。
子ノード
- anyName要素 を空要素にした場合、任意の要素もしくは属性の存在を許すことになります。
- except要素 を子要素に持つことが出来ます。その場合、except要素 内に記述された名前を持つ要素や属性は対象外となります。
使用例
例 1:
自己紹介 要素において、いかなる要素を複数個勝手に加えて良い(中身はテキスト)一方で、氏名 要素を常に必須要素として記述させたい場合は、以下のようにスキーマを作れるでしょう。
- スキーマ
-
<element name="自己紹介"> <interleave> <!-- 氏名要素を含め、要素の並び方は順位不同とする。 --> <zeroOrMore> <element> <!-- 氏名要素以外の任意の要素 --> <anyName> <except> <name>氏名</name> </except> </anyName> <text/> </element> </zeroOrMore> <element name="氏名"><text/></element> </interleave> </element>
- 正しい XML 文書(の断片)
-
<自己紹介> <氏名>鈴木栄作</氏名> <!-- 氏名は必須要素 --> <職業>総理大臣</職業> <趣味>スキー、テニス</趣味> </自己紹介>
- 間違った XML 文書(の断片)
-
<自己紹介> <!-- 氏名要素が欠落 --> <好物>鰯の丸干し</好物> <特技>踊り</特技> </自己紹介>
参考文献
- James Clark and Makoto Murata, ISO/IEC FDIS 19757-2 Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG
- 古林 寛, 「anyName要素 @ ぽかぽか RELAX NG 工房」