2012-06-20 15 views
5

मैं simpleType को परिभाषित कर रहा हूं जिसमें restriction है या तो enumeration से कोई मान या pattern से मेल खाने वाला मान हो। मुझे एहसास है कि मैं इसे pattern से कर सकता हूं लेकिन मैं पिकलिस्ट चाहता हूं कि enumeration प्रदान करता है।स्कीमा प्रतिबंध को परिभाषित करने के लिए कैसे एक गणना मूल्य या पैटर्न मिलान की अनुमति देता है?

यह है कि मैं क्या करने में सक्षम होने की उम्मीद है:

<xs:simpleType name="both"> 
    <xs:restriction base="xs:string"> 
    <xs:enumeration value="one" /> 
    <xs:enumeration value="two" /> 
    <xs:pattern value="[0..9]+" /> 
    </xs:restriction> 
<xs:simpleType> 

लेकिन वह विफल रहता है के बाद से एक मूल्य दोनों की कमी से मेल नहीं कर सकते हैं। यदि मैं किसी भी गणना मूल्य की अनुमति देने के लिए पैटर्न को संशोधित करता हूं तो यह केवल पैटर्न से मेल खाने पर विफल हो जाएगा।

उत्तर

8

बाहर निकलता है मुझे union की आवश्यकता है। एक अलग प्रकार के रूप में प्रगणित प्रकार निर्धारित करें:

<xs:simpleType name="enumeration"> 
    <xs:restriction base="xs:string"> 
    <xs:enumeration value="one" /> 
    <xs:enumeration value="two" /> 

    </xs:restriction> 
<xs:simpleType> 

फिर एक गणन के रूप में लक्ष्य प्रकार बनाने के लिए:

<xs:simpleType name="both"> 
    <xs:union memberTypes="enumeration"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
     <xs:pattern value="[0..9]+" /> 
     </xs:restriction> 
    </xs:simpleType> 
    </xs:union> 
</xs:simpleType> 

तो अब मैं पिकअप सूची प्राप्त या पैटर्न से मेल खाते हैं। वास्तव में मैं क्या चाहता था!

अद्यतन: वास्तव में union के बच्चों के रूप में या memberTypes विशेषता के माध्यम से दोनों सरल प्रकार को परिभाषित कर सकते हैं।

+0

टिप के लिए धन्यवाद! मैं उल्लेख करता हूं कि यह '0x' के भीतर सूचीबद्ध '' तत्वों के साथ भी काम करता है। बीटीडब्लू आपको यह स्पष्ट करने के लिए स्वीकार्य के रूप में उत्तर (यहां तक ​​कि स्वयं का) चिह्नित करना चाहिए, यह सही समाधान है। – Melebius