我有一个具有以下结构的XML文档:
<Values xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="test.xsd">
<value>
<styles>
<style>
<one>12</one>
<two>123</two>
<three>123</three>
</style>
<style>
<something>123</something>
</style>
</styles>
</value>
</Values>
我需要为其编写一个XSD架构,所以我这样写:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Values">
<xs:complexType>
<xs:all>
<xs:element name="value">
<xs:complexType>
<xs:all>
<xs:element name="styles" type="style_props"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
<xs:complexType name="style_props">
<xs:all>
<xs:element name="style" type="style_elements"/>
</xs:all>
</xs:complexType>
<xs:complexType name="style_elements">
<xs:choice minOccurs="1" maxOccurs="1">
<xs:group ref="first"/>
<xs:group ref="second"/>
</xs:choice>
</xs:complexType>
<xs:group name="first">
<xs:sequence>
<xs:element name="one" type="xs:integer"/>
<xs:element name="two" type="xs:integer"/>
<xs:element name="three" type="xs:integer"/>
</xs:sequence>
</xs:group>
<xs:group name="second">
<xs:sequence>
<xs:element name="something" type="xs:integer"/>
</xs:sequence>
</xs:group>
</xs:schema>
但是会发生下一个错误:“发现元素'style'开头的内容无效。这时应该没有子元素。”
我该如何解决?
答案 0 :(得分:1)
您误解了xs:all
的功能。如果希望styles
元素包含零个或多个style
元素,请输入:
<xs:complexType name="style_props">
<xs:sequence>
<xs:element name="style" type="style_elements" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>