2008-12-18 10 views
117

मुझे इसकी तलाश में कठिनाई हो रही है। कैसे मुझे लगता है कि इस तरह दिखता है एक्सएमएल के लिए एक XML स्कीमा फ़ाइल में एक तत्व निर्धारित करना होगा:एक्सएमएल स्कीमा: केवल टेक्स्ट वाले विशेषताओं वाले तत्व?

<option value="test">sometext</option> 

मैं समझ नहीं कैसे एक तत्व प्रकार xs:string की है कि परिभाषित करने के लिए है और यह भी एक विशेषता है। एक ही है

<xs:element name="option"> 
    <xs:complexType> 
    <xs:simpleContent> 
     <xs:extension base="xs:string"> 
     <xs:attribute name="value" type="xs:string" /> 
     </xs:extension> 
    </xs:simpleContent> 
    </xs:complexType> 
</xs:element> 

उत्तर

147

<xs:element name="option" type="AttrElement" /> 

    <xs:complexType name="AttrElement"> 
    <xs:simpleContent> 
     <xs:extension base="xs:string"> 
     <xs:attribute name="value" type="xs:string"> 
     </xs:attribute> 
     </xs:extension> 
    </xs:simpleContent> 
    </xs:complexType> 
+0

मुझे आपके कोड - org.xml.sax.SAXParseException की कोशिश करने पर निम्नलिखित अपवाद मिल रहा है: src-resol: आर नहीं हो सकता है 'AttrElement' नाम को एक (n) 'प्रकार परिभाषा' घटक में शामिल करें। ऐसा क्यों हैं? – Ashwin

+1

यदि ऐसा है, तो शायद ऐसा इसलिए है क्योंकि आपके स्कीमा दस्तावेज़ में एक लक्षित नेमस्पेस है और आपको टाइप करने के लिए एक उपसर्ग नाम का उपयोग करने की आवश्यकता होगी। (यदि उपसर्ग 'tns' स्कीमा दस्तावेज़ के लक्ष्य नेमस्पेस से जुड़ा हुआ है, तो आप' type = "tns का उपयोग करेंगे: प्रकार को संदर्भित करने के लिए AttrElement" '। –

+0

@Ashwin आपको टाइपस्पेस प्रकार के प्रकार को संदर्भित करने की आवश्यकता हो सकती है ('टाइप = "टीएनएस: एट्रीलेमेंट" 'यदि एक्सएसडी का आपका डिफ़ॉल्ट नेमस्पेस xs का लक्ष्य नेमस्पेस नहीं है। आमतौर पर उस मामले में' tns' को परिभाषित और प्रयोग किया जाता है। – eckes

69

... या इनलाइन बराबर का प्रयास करें:

यहाँ मैं अब तक क्या आपके पास यह है , लेकिन यह मेरे लिए काम करता है:

<xsd:element name="option"> 
    <xsd:complexType mixed="true"> 
     <xsd:attribute name="value" use="optional" type="xsd:string"/> 
    </xsd:complexType> 
</xsd:element> 
+10

मुझे यह 'सरल सामग्री' को परिभाषित करने के लिए वास्तव में अनजान लगता है 'कॉम्प्लेक्स टाइप '। लेकिन फिर यह एक्सएसडी है, जहां कुछ भी वास्तव में अंतर्ज्ञानी नहीं लगता है। फिर भी धन्यवाद! :-) – flu

+0

यह * इंटेलिजे * (* वी 12.1.3 *) में मेरे लिए एक त्रुटि दिखाएगा: मान विशेषता" अनुमति नहीं है " । ** simpleContent ** के बजाय ** complexContent ** का उपयोग ** इसे ठीक किया गया। – aZen

+0

@CrBruno इसके लिए एक समर्पित SO प्रश्न बेहतर खोलता है। टिप्पणियों में यहां से लिंक करने के लिए स्वतंत्र महसूस करें (और इस दुविधा को इंगित करें) – eckes

-3

मैं यह पता नहीं:

<xs:element name="option"> 
    <xs:complexType> 
     <xs:attribute name="value" type="xs:string" /> 
    </xs:complexType> 
</xs:element> 
संबंधित मुद्दे