Domanda

Ho il seguente schema, che io uso per garantire che PhoneNumber di una persona e PhoneNumberType (casa, lavoro, etc.) non è più lungo di 10 caratteri. Tuttavia, voglio migliorare questo schema in modo che PhoneNumberType non è necessaria se non è previsto un PhoneNumber, ma è necessaria se viene fornito il PhoneNumber. C'è un modo per fare questo in XML Schema 1.0?

Sono consapevole che questo potrebbe essere realizzato in XML Schema 1.1 utilizzando <xs:assert/>, ma purtroppo io sono bloccato con XML Schema 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>

Altri suggerimenti

Mi sembra che questa sia una relazione "ha".

Se si dispone di un elemento di PhoneNumber, allora dovrebbe avere una proprietà che è di tipo PhoneNumberType. Invece di fare in giro con la convalida e restrizioni, vorrei suggerire che si accende PhoneNumber in un elemento complesso e fare PhoneNumberType una proprietà obbligatoria di esso.

potrebbe essere troppo tardi, ma li si può mettere in gruppo come questo

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

E rendere questo gruppo richiesto o no

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top