Последовательность XSD с дополнительными элементами и любой - PullRequest
0 голосов
/ 21 февраля 2019

Можно ли определить последовательность сложного типа с необязательными элементами, за которыми следует n необязательных элементов?В настоящее время у меня есть этот XSD, который Violaet 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>

Здесь используется только необязательная роль, и возраст будет одним любым элементом.

1 Ответ

0 голосов
/ 22 февраля 2019

Решение простое.Последний элемент выше любого не может быть необязательным.Этот 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>

...