【问题标题】:XSD Sequence with optional elements and any带有可选元素和任何元素的 XSD 序列
【发布时间】:2019-07-15 18:51:05
【问题描述】:

是否可以定义一个复杂类型序列,其中包含可选元素,后跟 n 个可选的任何元素? 目前我有这个违反 UPA 的 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="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>

这里只使用了可选角色,年龄是任意元素之一。

【问题讨论】:

标签: xsd xsd-validation


【解决方案1】:

解决方案很简单。 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多