我想爲字符串鍵值對的樹構建XSD。 的東西,以適應這一點:XSD字符串鍵值對的樹
<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:字符串,而不是XSD:anyType的)
這種替代模式:
<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>
可以用:
<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:
<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:
<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:請不要討論你是否喜歡這種模式;這是一個很好的討論,但它不是這篇文章的目標。 這篇文章的目的是要找出如何儘可能爲這個XML編寫XSD,而不使用xsd:anyType。
我試過對字符串和非字符串元素使用不同標籤名稱的選項,但我沒有爲它構建XSD。那正是我在用我包括在帖子中的大XSD嘗試時,但它產生了我在帖子中提到的「醜陋的XML」。 你知道如何構建一個與你的例子一致的XSD嗎?關於「更可讀性將會...」的 –
,我同意,這是XML和XSD的目的。但是,由於某個項目的特定原因,我需要預先未預先定義的字符串值鍵對樹。 –
我已經爲XML添加了XSD。另外,如果你需要一對沒有預定義的對的樹 - 這正是XML的內容。使用XSD「定義不預定義」有什麼意義? – kan