XSD 包含可选元素和任意元素的序列
XSD Sequence with optional elements and any
是否可以定义一个复杂类型序列,其中包含可选元素后跟 n 个可选 any 元素?
目前我有这个 XSD violaets UPA:
<xs:complexType name="itemtype">
<xs:sequence>
<xs:element name="uuid" type="uuidtype"/>
<xs:element name="lastname" type="nametype"/>
<xs:element name="isActive" minOccurs="0" type="isactivetype"/>
<xs:element name="countries_scope" type="countryscopetype"/>
<xs:element name="origin" minOccurs="0" type="nametype"/>
<xs:element name="url" minOccurs="0" type="nametype"/>
<xs:element name="email" minOccurs="0" type="emailtype"/>
<xs:element name="description" minOccurs="0" type="nametype"/>
<xs:element name="town" minOccurs="0" type="nametype"/>
<xs:element name="role" minOccurs="0" type="nametype"/>
<xs:element name="source" minOccurs="0" type="nametype"/>
<xs:element name="origin_zip" minOccurs="0" type="nametype"/>
<xs:element name="town_zip" minOccurs="0" type="nametype"/>
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xs:sequence>
</xs:complexType>
可能的 XML 可能是:
<item>
<uuid>1</uuid>
<lastname>Yanick</lastname>
<country_scope>CHE</country_scope>
<role>Student</role>
<age>24</age>
</item>
这里只使用可选角色,年龄可以是任意一个元素。
解决方法很简单。 any 之前的最后一个元素不能是可选的。
这个 XSD 可以工作:
<xs:complexType name="itemtype">
<xs:sequence>
<xs:element name="uuid" type="uuidtype"/>
<xs:element name="lastname" type="nametype"/>
<xs:element name="isActive" minOccurs="0" type="isactivetype"/>
<xs:element name="origin" minOccurs="0" type="nametype"/>
<xs:element name="url" minOccurs="0" type="nametype"/>
<xs:element name="email" minOccurs="0" type="emailtype"/>
<xs:element name="description" minOccurs="0" type="nametype"/>
<xs:element name="town" minOccurs="0" type="nametype"/>
<xs:element name="role" minOccurs="0" type="nametype"/>
<xs:element name="source" minOccurs="0" type="nametype"/>
<xs:element name="origin_zip" minOccurs="0" type="nametype"/>
<xs:element name="town_zip" minOccurs="0" type="nametype"/>
<xs:element name="countries_scope" type="countryscopetype"/>
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xs:sequence>
是否可以定义一个复杂类型序列,其中包含可选元素后跟 n 个可选 any 元素? 目前我有这个 XSD violaets UPA:
<xs:complexType name="itemtype">
<xs:sequence>
<xs:element name="uuid" type="uuidtype"/>
<xs:element name="lastname" type="nametype"/>
<xs:element name="isActive" minOccurs="0" type="isactivetype"/>
<xs:element name="countries_scope" type="countryscopetype"/>
<xs:element name="origin" minOccurs="0" type="nametype"/>
<xs:element name="url" minOccurs="0" type="nametype"/>
<xs:element name="email" minOccurs="0" type="emailtype"/>
<xs:element name="description" minOccurs="0" type="nametype"/>
<xs:element name="town" minOccurs="0" type="nametype"/>
<xs:element name="role" minOccurs="0" type="nametype"/>
<xs:element name="source" minOccurs="0" type="nametype"/>
<xs:element name="origin_zip" minOccurs="0" type="nametype"/>
<xs:element name="town_zip" minOccurs="0" type="nametype"/>
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xs:sequence>
</xs:complexType>
可能的 XML 可能是:
<item>
<uuid>1</uuid>
<lastname>Yanick</lastname>
<country_scope>CHE</country_scope>
<role>Student</role>
<age>24</age>
</item>
这里只使用可选角色,年龄可以是任意一个元素。
解决方法很简单。 any 之前的最后一个元素不能是可选的。 这个 XSD 可以工作:
<xs:complexType name="itemtype">
<xs:sequence>
<xs:element name="uuid" type="uuidtype"/>
<xs:element name="lastname" type="nametype"/>
<xs:element name="isActive" minOccurs="0" type="isactivetype"/>
<xs:element name="origin" minOccurs="0" type="nametype"/>
<xs:element name="url" minOccurs="0" type="nametype"/>
<xs:element name="email" minOccurs="0" type="emailtype"/>
<xs:element name="description" minOccurs="0" type="nametype"/>
<xs:element name="town" minOccurs="0" type="nametype"/>
<xs:element name="role" minOccurs="0" type="nametype"/>
<xs:element name="source" minOccurs="0" type="nametype"/>
<xs:element name="origin_zip" minOccurs="0" type="nametype"/>
<xs:element name="town_zip" minOccurs="0" type="nametype"/>
<xs:element name="countries_scope" type="countryscopetype"/>
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xs:sequence>