Pregunta

Tengo el siguiente esquema, que utilizo para asegurar que PhoneNumber y PhoneNumberType de una persona (casa, trabajo, etc.) no más de 10 caracteres se ofrecen. Sin embargo, quiero mejorar este esquema por lo que no se requiere que PhoneNumberType si no se proporciona un PhoneNumber, pero es necesario si se proporciona la PhoneNumber. ¿Hay una manera de hacer esto en el esquema XML 1.0?

Soy consciente de que esto podría llevarse a cabo en el esquema XML 1.1 usando <xs:assert/>, pero por desgracia estoy atascado con el 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>

Otros consejos

Me parece que este es un "tiene" relación.

Si usted tiene un elemento de Fax, entonces debería tener una propiedad que es de tipo PhoneNumberType. En lugar de jugar un poco con la validación y restricciones, sugeriría que active Fax en un elemento complejo y hacer PhoneNumberType una propiedad necesaria de la misma.

Puede ser demasiado tarde, pero se puede ponerlos en grupo como éste

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

Y hacer que este grupo requiere o no

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top