XML-Schema ein Feld zu beschränken, basierend auf einem anderen
Frage
Ich habe folgendes Schema, das ich verwende, um sicherzustellen, dass eine Person, die PhoneNumber
und PhoneNumberType
(Heim, Arbeit, etc.) nicht länger als 10 Zeichen. Allerdings mag ich dieses Schema zu verbessern, so dass PhoneNumberType
nicht, wenn ein PhoneNumber
erforderlich ist, ist nicht vorgesehen, sondern ist erforderlich, wenn der PhoneNumber
vorgesehen ist. Gibt es eine Möglichkeit, dies in XML Schema 1.0 zu tun?
Ich bin mir bewusst, das 1.1 mit <xs:assert/>
in XML-Schema erreicht werden könnte, aber leider bin ich mit XML Schema 1.0 stecken.
<?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>
Lösung
Sorry, XML-Schema kann das nicht tun.
Einige ähnliche Fragen:
Andere Tipps
Es scheint mir, dass dies eine „hat“ Beziehung.
Wenn Sie eine Telefonnummer Element haben, dann sollte es eine Eigenschaft hat, die vom Typ PhoneNumberType ist. Anstatt mit der Validierung und Einschränkungen Herumspielen, würde ich vorschlagen, dass Sie Phone in ein komplexes Element drehen und PhoneNumberType eine erforderliche Eigenschaft daraus machen.
Auch zu spät sein, aber man kann sich in der Gruppe setzen wie diese
<xs:group name="group">
<xs:sequence>
<xs:element ref="PhoneNumber"/>
<xs:element ref="PhoneNymberType" />
</xs:sequence>
Und machen diese Gruppe erforderlich ist oder nicht