مخطط XML لتقييد مجال واحد على أساس آخر
سؤال
لدي المخطط التالي ، الذي أستخدمه للتأكد من أن الشخص PhoneNumber
و PhoneNumberType
(المنزل ، العمل ، وما إلى ذلك) ليس أطول من 10 أحرف. ومع ذلك ، أريد تحسين هذا المخطط PhoneNumberType
غير مطلوب إذا أ PhoneNumber
لم يتم توفيره ، ولكن مطلوب إذا كان PhoneNumber
متوفر. هل هناك طريقة للقيام بذلك في مخطط XML 1.0؟
أدرك أن هذا يمكن إنجازه في مخطط XML 1.1 باستخدام <xs:assert/>
, ، لكن لسوء الحظ أنا عالق مع Schema 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>
المحلول
آسف ، مخطط XML لا يمكنه فعل ذلك.
بعض الأسئلة المماثلة:
نصائح أخرى
يبدو لي أن هذه علاقة "لها".
إذا كان لديك عنصر عقيد ، فيجب أن يكون له خاصية من النوع PhonEnumberType. بدلاً من العبث بالتحقق من التحقق من صحة والقيود ، أود أن أقترح عليك تحويل الصوتية إلى عنصر معقد وجعل خاصية مطلوبة لها.
قد يكون متأخراً للغاية ، ولكن يمكنك وضعها في مجموعة مثل هذه
<xs:group name="group">
<xs:sequence>
<xs:element ref="PhoneNumber"/>
<xs:element ref="PhoneNymberType" />
</xs:sequence>
وجعل هذه المجموعة مطلوبة أم لا