Pergunta

Eu tenho o seguinte esquema, que eu uso para garantir que uma pessoa PhoneNumber e PhoneNumberType (Home, trabalho, etc.) não é superior a 10 caracteres. No entanto, quero melhorar esse esquema para que PhoneNumberType não é necessário se um PhoneNumber não é fornecido, mas é necessário se o PhoneNumber é fornecido. Existe uma maneira de fazer isso no XML Schema 1.0?

Estou ciente de que isso pode ser realizado no esquema XML 1.1 usando <xs:assert/>, mas infelizmente estou preso ao esquema 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>

Outras dicas

Parece -me que este é um relacionamento "tem".

Se você possui um elemento foneNumber, ele deve ter uma propriedade do tipo PhoneNumberType. Em vez de mexer com validação e restrições, sugiro que você transforme o número de telefone em um elemento complexo e faça do PhoneNumberType uma propriedade necessária.

Pode ser tarde demais, mas você pode colocá -los em grupo assim

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

E fazer esse grupo necessário ou não

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top