あるフィールドを別のフィールドに基づいて制限する XML スキーマ
質問
次のスキーマがあります。これを使用して、人の PhoneNumber
そして PhoneNumberType
(自宅、職場など)は10文字以内です。ただし、このスキーマを改善して、 PhoneNumberType
の場合は必要ありません。 PhoneNumber
は提供されていませんが、次の場合には必須です。 PhoneNumber
供給される。XML Schema 1.0 でこれを行う方法はありますか?
これは、XML Schema 1.1 で以下を使用して実現できることは承知しています。 <xs:assert/>
, 、しかし残念なことに、私は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>
解決
申し訳ありませんが、XML スキーマではそれができません。
同様の質問がいくつかあります:
他のヒント
「持っている」関係であるように私には思えます。
あなたはPhoneNumberの要素を持っている場合は、、それはタイプPhoneNumberTypeのある性質を持っている必要があります。むしろ、検証と制限をいじりよりも、私はあなたが複雑な要素にPhoneNumberのを回すとPhoneNumberTypeそれの必要なプロパティにすることをお勧めします。
は遅すぎるかもしれないが、あなたはこの
のようなグループにそれらを置くことができます<xs:group name="group">
<xs:sequence>
<xs:element ref="PhoneNumber"/>
<xs:element ref="PhoneNymberType" />
</xs:sequence>
そして作るこのグループが必要かどうか。
所属していません StackOverflow