2010-02-15 4 views
5

को देखते हुए निम्न उदाहरण:एक्सएसडी: व्युत्पन्न जटिल प्रकार के गणना मूल्यों को कैसे सीमित करें?

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:complexType name="Book" abstract="true"> 
     <xs:sequence> 
      <xs:element name="titel" type="xs:string"> 
      </xs:element> 
      <xs:element name="bookCode" type="BookEnum"/> 
     </xs:sequence> 
    </xs:complexType> 
    <xs:complexType name="Lyric"> 
     <xs:complexContent> 
      <xs:extension base="Book"> 
       <xs:sequence> 
        <xs:element name="author" type="xs:string"> 
        </xs:element> 
       </xs:sequence> 
      </xs:extension> 
     </xs:complexContent> 
    </xs:complexType> 
    <xs:simpleType name="BookEnum"> 
     <xs:restriction base="xs:int"> 
      <xs:enumeration value="Paperback"/> 
      <xs:enumeration value="Hardcover"/> 
      <xs:enumeration value="Liporello"/> 
      <xs:enumeration value="None"/> 
     </xs:restriction> 
    </xs:simpleType> 
</xs:schema> 

गीत बुक से निकला है। मैं "पेपरबैक" होने के लिए जटिल प्रकार "गीत" के लिए BookEnum के संभावित मानों को प्रतिबंधित करना चाहता हूं।

"कोई नहीं", "लिपोरेलो" और "हार्डकवर" अब "गीत" के लिए मान्य मान नहीं होना चाहिए। क्या यह xsd में किया जा सकता है?

उत्तर

8

नहीं, दुर्भाग्य से आप ऐसा नहीं कर सकते हैं। इस तरह की गणना को सीमित करने का कोई तरीका नहीं है, और आपको एक ही समय में एक जटिल प्रकार को विस्तार और प्रतिबंधित करने में भी परेशानी होगी। एक अच्छा लेख है कि आप here समझा सकते हैं।

शायद इसके बजाय नीचे काम करने पर विचार करें: इसमें मूलभूत पुस्तक प्रकार को परिभाषित करें जिसमें लगभग कुछ भी नहीं है; फिर एक LyricType परिभाषित करें जो मूल प्रकार और कुछ और मूल्यों का एक संघ है; किताब को उप-प्रकारों में ले जाएं। यह आदर्श नहीं है, लेकिन हां, एक्सएसडी ऑब्जेक्ट उन्मुख भाषाओं के साथ हमेशा संरेखित नहीं होता है।

+0

आईबीएम साइट का लिंक के लिए धन्यवाद। बहुत बुरा यह "प्रतिबंध" के साथ ठीक से काम नहीं करता है। वैसे भी, आपके उत्तर के लिए धन्यवाद। – tobsen

+1

मुझे लगता है कि आप xpath का उपयोग कर एक्सएसडी 1.1 में ऐसा कर सकते हैं: http://stackoverflow.com/questions/6472264/can-an-xsdenumeration-tag-be-made-mandatory- अपेक्षित – RMorrisey

1

अंत में .. आप अन्य (पैरेंट या भाई या आदि) मान का उपयोग नोड मान्य करने के लिए कोशिश कर रहे हैं .. निश्चित रूप से संभव नहीं है कौन सा ..

संबंधित मुद्दे