2009-06-29 25 views
8

चलो कहते हैं कि मैं बहुत की तरह एक सामान्य complexType स्थापित करने के लिए चाहते हैं:एक्सएमएल स्कीमा: जटिल टाइप के लिए डिफ़ॉल्ट मान सेट करना?

<xs:complexType name="button"> 
    <xs:sequence> 
     <xs:element name="id" type="xs:string" minOccurs="0" maxOccurs="1"/> 
     <xs:element name="href" type="xs:string" minOccurs="0" maxOccurs="1"/> 
     <xs:element name="label" type="xs:string" minOccurs="0" maxOccurs="1"/> 
    </xs:sequence> 
</xs:complexType> 

और मैं तो जैसे संदर्भित करने के लिए है कि complexType विभिन्न स्थानों में मेरी स्कीमा फ़ाइल में हैं:

<xs:element name="someButton" type="button" /> 

इसके लिए संभव है मुझे कुछ उप-तत्वों के माध्यम से बटन उप-तत्वों के लिए डिफ़ॉल्ट मान सेट करने के लिए? (Ie अगर मैं someButton "गो" का एक डिफ़ॉल्ट लेबल या "index.html" की एक डिफ़ॉल्ट href करना चाहते हैं)

मूल रूप से ... अभी मैं की तरह

<Field Name="State" DataSourceField="State" /> 

कुछ है और मैं मैं जितना संभव हो उतना सरल तरीके से अनावश्यकता को हटाने की कोशिश कर रहा हूं।

उत्तर

18

नहीं, केवल साधारण मूल्यों के लिए। लेकिन हो सकता है कि आप अपने जटिल प्रकार के सभी साधारण भागों के लिए डिफ़ॉल्ट मान देकर, आप जो चाहते हैं उसे करने के लिए उनका उपयोग कर सकें। हालांकि, यह आपके तत्वों के मुकाबले विशेषताओं के लिए बेहतर काम करता है (क्योंकि "गुण विशेषता अनुपलब्ध होने पर डिफ़ॉल्ट विशेषता मान लागू होते हैं, और तत्व खाली होने पर डिफ़ॉल्ट तत्व मान लागू होते हैं" - नीचे देखें)। गुण खुद को डिफ़ॉल्ट रूप से वैकल्पिक हैं: हालांकि यह विशेषता प्रत्येक मामले में एक अलग परिणाम है

दोनों गुण और तत्वों की
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="button" type="button"/> 
    <xs:complexType name="button"> 
    <xs:attribute name="id" type="xs:string"/> 
    <xs:attribute name="href" type="xs:string" default="index.html"/> 
    <xs:attribute name="label" type="xs:string" default="Go"/> 
    </xs:complexType> 
</xs:schema> 

<button id="1"/> 

डिफ़ॉल्ट मान, डिफ़ॉल्ट विशेषता का उपयोग घोषित कर रहे हैं। जब किसी विशेषता को डिफ़ॉल्ट मान के साथ घोषित किया जाता है, तो विशेषता का मान किसी आवृत्ति दस्तावेज़ में विशेषता के मान के रूप में जो भी मान प्रकट होता है; यदि विशेषता उदाहरण दस्तावेज़ में प्रकट नहीं होती है, तो स्कीमा प्रोसेसर विशेषता को डिफ़ॉल्ट विशेषता के बराबर मान प्रदान करता है। ध्यान दें कि विशेषताओं के लिए डिफ़ॉल्ट मान केवल तभी समझ में आते हैं जब गुण स्वयं वैकल्पिक होते हैं, और इसलिए यह डिफ़ॉल्ट मान और उपयोग के लिए वैकल्पिक मान के अलावा कुछ भी निर्दिष्ट करने में त्रुटि है।

स्कीमा प्रोसेसर डिफ़ॉल्ट तत्वों को थोड़ा अलग तरीके से मानता है। जब किसी तत्व को डिफ़ॉल्ट मान के साथ घोषित किया जाता है, तो तत्व का मान उदाहरण दस्तावेज़ में तत्व की सामग्री के रूप में जो भी मान प्रकट होता है; यदि तत्व किसी भी सामग्री के बिना प्रकट होता है, तो स्कीमा प्रोसेसर तत्व को डिफ़ॉल्ट विशेषता के बराबर मान प्रदान करता है। हालांकि, यदि तत्व उदाहरण दस्तावेज़ में प्रकट नहीं होता है, तो स्कीमा प्रोसेसर तत्व प्रदान नहीं करता है। संक्षेप में, तत्व और विशेषता डिफ़ॉल्ट के बीच अंतर इस प्रकार कहा जा सकता है: गुण विशेषता अनुपलब्ध होने पर डिफ़ॉल्ट विशेषता मान लागू होते हैं, और तत्व खाली होने पर डिफ़ॉल्ट तत्व मान लागू होते हैं। [जोर जोड़ा]

http://www.w3.org/TR/xmlschema-0/#OccurrenceConstraints

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