文字列のキーと値のペアのツリーに対してXSDを構築したいと思います。これに合わせて 何か:文字列のキーと値のペアのツリーのXSD
この代替パターン:
<entry>
<key>root</key>
<entry>
<key>name</key>
<value>john</value>
</entry>
<entry>
<key>address</key>
<entry>
<key>street</key>
<value>Rou de Flon 1</value>
</entry>
<entry>
<key>city</key>
<value>Lausanne</value>
</entry>
</entry>
</entry>
<entry>
<key>root</key>
<entry key="name">john</entry>
<entry key="address">
<entry key="street">Rou de Flon 1</entry>
<entry key="city">Lausanne</entry>
</entry>
</entry>
私はこの(::文字列ではなく、XSD anyTypeを私はXSDを使用する)を取得するために管理していませんでした
はで行うことができます。
<xsd:complexType name="Entry">
<xsd:sequence>
<xsd:element name="key" type="xsd:string"/>
<xsd:choice>
<xsd:element name="value" type="xsd:string"/>
<xsd:element name="entry" maxOccurs="unbounded" type="rbo:Entry"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
が、私は最初のパターンを使用することを好むだろう、それ理由よりコンパクトです。
<xsd:complexType name="ValueEntry">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="key" use="required" type="xsd:string"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="ListEntry">
<xsd:sequence>
<xsd:element name="entry" maxOccurs="unbounded" type="rbo:ListOrValueEntry"/>
</xsd:sequence>
<xsd:attribute name="key" use="required" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="ListOrValueEntry">
<xsd:sequence>
<xsd:choice>
<xsd:element name="value" type="rbo:ValueEntry"/>
<xsd:element name="entry" type="rbo:ListEntry"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
が、それはより醜いXML生成します:
は、私は、この他のXSDしようとしたので、<listEntry>
<entry>
<value key="name">john</value>
</entry>
<entry>
<entry key="address">
<entry>
<value key="street">Rou de Flon 1</value>
</entry>
<entry>
<value key="city">Lausanne</value>
</entry>
</entry>
</entry>
</listEntry>
を、XSDを使用せずに、このパターンのXSDを作成する方法があります:anyTypeを?
<entry>
<key>root</key>
<entry key="name">john</entry>
<entry key="address">
<entry key="street">Rou de Flon 1</entry>
<entry key="city">Lausanne</entry>
</entry>
</entry>
ps:どうかこのパターンが好きかどうかは議論しないでください。それはすばらしい議論ですが、この投稿の目的ではありません。 この投稿の目的は、xsd:anyTypeを使用せずに、できるだけこのXMLのためのXSDを書く方法を見つけることです。
文字列と非文字列の要素に異なるタグ名を使用するオプションを試しましたが、そのためにXSDを構築するためにmanagetしませんでした。それは私が投稿に含まれている大きなXSDで試していたものでしたが、投稿で言及している "醜いXML"を生成します。 あなたの例で有効なXSDを構築する方法を知っていますか? –
"もっと読みやすくなるだろう..."と私は同意します。これがXMLとXSDの目的です。しかし、プロジェクトの特定の理由から、あらかじめ定義されていない文字列の値とキーのペアのツリーが必要です。 –
XMLのXSDを追加しました。また、あらかじめ定義されていないペアのツリーが必要な場合は、XMLとまったく同じです。 XSDで「定義されていない定義」のポイントは何ですか? – kan