Question

Je le schéma suivant, que j'utilise pour faire en sorte que la PhoneNumber et PhoneNumberType d'une personne (maison, travail, etc.) ne sont pas plus de 10 caractères. Cependant, je veux améliorer ce schéma afin que PhoneNumberType ne soit pas nécessaire si une PhoneNumber n'est pas fourni, mais il est nécessaire si le PhoneNumber est fourni. Est-il possible de le faire dans le schéma XML 1.0?

Je sais cela pourrait se faire dans le schéma XML 1.1 en utilisant <xs:assert/>, mais malheureusement je suis coincé avec un schéma XML 1.0.

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xs:element name="PhoneNumber">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="0"/>
        <xs:maxLength value="10"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="PhoneNumberType">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="0"/>
        <xs:maxLength value="10"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
</xsd:schema>

Autres conseils

Il me semble que ce soit une relation « a ».

Si vous avez un élément PhoneNumber, il devrait avoir une propriété qui est de type PhoneNumberType. Plutôt que de déconner avec la validation et les restrictions, je suggère que vous tournez PhoneNumber dans un élément complexe et de faire PhoneNumberType une propriété nécessaire de celui-ci.

Peut être trop tard, mais vous pouvez les mettre dans le groupe comme celui-ci

<xs:group name="group">
<xs:sequence>
    <xs:element ref="PhoneNumber"/>
    <xs:element ref="PhoneNymberType" />
</xs:sequence>

Et faire ce groupe nécessaire ou non

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top