2011-07-27 3 views
11

पहला प्रश्न (दयालु हो!) स्पष्टीकरण: यदि कोई संपत्ति सच है, तो मुझे तत्वों के प्रकार की आवश्यकता है। तो अगर एक विशेषता सच है, XML आउटपुट हो सकता है:क्या एक्सएमएल तत्वों का अनुक्रम किसी संपत्ति पर सशर्त हो सकता है?

<Approval Approved="true"> 
    <By>RT</By> 
    <Date>27/07/2011</Date> 
</Approval> 

और अगर वह स्वीकृत नहीं है, एक्सएमएल उत्पादन हो सकता है

<Approval Approved="false" /> 

एक में कुछ इस तरह निर्दिष्ट करने के लिए यह संभव है XSD?

+1

यह XSD में संभव नहीं है, लेकिन आप को व्यक्त करने में सक्षम हो सकता है कि का उपयोग कर स्कीमेट्रोन (http://www.schematron.com/) या कुछ समान। –

उत्तर

6

बाहर निकलता है, आप इसे (तरह) कर सकते हैं लेकिन विधि पूरी तरह से बेकार है।

<xs:element name="ArchivedFormulation"> 
<xs:complexType> 
    <xs:choice> 
    <xs:element name="ApprovedFormulation" type="ApprovedFormulation" /> 
    <xs:element name="NonApprovedFormulation" type="NonApprovedFormulation" /> 
    </xs:choice> 
</xs:complexType> 

जटिल जोड़ सकते हैं:

, दो जटिल प्रकार (स्वीकृत टैग के साथ एक और बिना एक) बनाने के मूल तत्व को बदलने और इस तरह दो प्रकार के बीच स्विच करने की अनुमति के लिए था एक्सएसडी विरासत का उपयोग कर प्रकार।

<xs:complexType name="ApprovedFormulation"> 
<xs:complexContent> 
    <xs:extension base="NonApprovedFormulation"> 
    <xs:sequence> 
     <xs:element name="Approved" minOccurs="1" maxOccurs="1"> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element name="ApprovedBy" type="xs:string" /> 
      <xs:element name="ApprovedOn" type="xs:date" /> 
      </xs:sequence> 
      <xs:attribute name="IsApproved" type="xs:boolean" /> 
     </xs:complexType> 
     </xs:element> 
    </xs:sequence> 
    </xs:extension> 
</xs:complexContent> 

कि मुझे दिया है कि मैं क्या चाहता था।

1

बूलियन मान को Approved विशेषता के साथ सिग्नल करने के लिए थोड़ा आसान तरीका होगा जिसका मूल्य या तो सत्य या गलत है, लेकिन खाली Approved तत्व जो वर्तमान या अनुपस्थित है।

<xs:element name="Formulation"> 
    <xs:complexType> 
    <xs:sequence minOccurs="0"> 
     <xs:element ref="Approved"/> 
     <xs:element ref="By"/> 
     <xs:element ref="Date"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

अब आप अपने दो उदाहरण इस तरह दिखेगा:

<Formulation/> 
<Formulation> 
    <Approved/> 
    <By>RT</By> 
    <Date>27/07/2011</Date> 
</Formulation> 
संबंधित मुद्दे