XML स्कीमा: केवल पाठ वाले गुणों के साथ तत्व?


133

मुझे इसे खोजने में कठिनाई हो रही है। मैं XML के लिए XML स्कीमा फ़ाइल में एक तत्व को कैसे परिभाषित करूंगा जो इस तरह दिखता है:

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

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

यहाँ मैंने अभी तक क्या किया है:

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

जवाबों:


168

प्रयत्न

  <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>

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

1
यदि ऐसा है, तो यह संभवतः इसलिए है क्योंकि आपके स्कीमा दस्तावेज़ में एक लक्ष्य नाम स्थान है और आपको टाइप करने के लिए एक उपसर्ग नाम का उपयोग करने की आवश्यकता होगी। (यदि उपसर्ग tnsस्कीमा दस्तावेज़ के लक्ष्य नामस्थान से बंधा हुआ है, तो आप type="tns:AttrElement"टाइप करने के लिए संदर्भित करेंगे ।)
CM Sperberg-McQueen

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

75

... या इनलाइन समतुल्य:

<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>

11
मुझे लगता है कि यह वास्तव simpleContentमें एक के भीतर परिभाषित करने के लिए unintuitive है complexType। लेकिन फिर से यह एक्सएसडी है, जहां कुछ भी वास्तव में सहज नहीं लगता है। फिर भी धन्यवाद! :-)
फ्लू

यह IntelliJ ( V12.1.3 ) में मेरे लिए एक त्रुटि दिखाएगा : मान विशेषता "अनुमति नहीं है"। का उपयोग करते हुए complexContent बजाय simpleContent यह तय की।
ऐजेन

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

-2

मुझे पता है कि यह समान नहीं है, लेकिन यह मेरे लिए काम करता है:

<xsd:element name="option">
    <xsd:complexType mixed="true">
        <xsd:attribute name="value" use="optional" type="xsd:string"/>
    </xsd:complexType>
</xsd:element>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.