※ ChatGPTを利用し、要約された質問です(原文:子要素が順不同の場合のXML Schema の定義)
XML Schema の定義方法について
このQ&Aのポイント
XML Schema の定義では、子要素の出現順序が不定の場合でも対応する方法があります。
具体的には、sequence、choice、all のいずれかを使用することで、順不同の子要素を定義することができます。
xsd:? の部分には、sequence、choice、all のいずれかを使用すればよいです。
子要素が順不同の場合のXML Schema の定義
OpenSearch description documents の XML Schema を作成中なのです。ルート要素の <OpenSearchDescription> の各子要素について、出現回数の定義があるのですが、各要素の出現は順不同なのです。
<xsd:element name="OpenSearchDescription">
<xsd:annotation>
<xsd:documentation source="https://github.com/dewitt/opensearch/blob/master/opense
arch-1-1-draft-6.md#opensearch-description-elements">
The root node of the OpenSearch description document.
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:?>
<xsd:element ref="ShortName" minOccurs="1" maxOccurs="1" />
<xsd:element ref="Description" minOccurs="1" maxOccurs="1" />
<xsd:element ref="Tags" minOccurs="0" maxOccurs="1" />
<xsd:element ref="Contact" minOccurs="0" maxOccurs="1" />
<xsd:element ref="Url" minOccurs="1" maxOccurs="unbounded" />
<xsd:element ref="LongName" minOccurs="0" maxOccurs="1" />
<xsd:element ref="Image" minOccurs="0" maxOccurs="unbounded" />
<xsd:element ref="Query" minOccurs="0" maxOccurs="unbounded" />
<xsd:element ref="Developer" minOccurs="0" maxOccurs="1" />
<xsd:element ref="Attribution" minOccurs="0" maxOccurs="1" />
<xsd:element ref="SyndicationRight" minOccurs="0" maxOccurs="1" />
<xsd:element ref="AdultContent" minOccurs="0" maxOccurs="1" />
<xsd:element ref="Language" minOccurs="0" maxOccurs="unbounded" />
<xsd:element ref="OutputEncoding" minOccurs="0" maxOccurs="unbounded" />
<xsd:element ref="InputEncoding" minOccurs="0" maxOccurs="unbounded" />
</xsd:?>
<xsd:anyAttribute namespace="##any" processContents="skip" />
</xsd:complexType>
</xsd:element>
具体的には上記のような内容なのですが、xsd:? の部分にどのように記述すればよいでしょうか。
sequence, choice, all のどれを使用しても上手くいきません。解決方法をご教示頂ければ幸いです。
お礼
ご回答頂きましてありがとうございます。 > 出現回数だけ決まってて順番はめちゃくちゃでいいってことですか? ご指摘の通りです。仕様に出現回数についての規定はあるのですが、順番についての規定はなくどう表してよいか、迷っていたところです。 やはり XML Schema では難しいですか。他のスキーマ言語では表現可能だったりするのでしょうか。