पुराने सवाल का नया जवाब
इस पुराने प्रश्न का कोई मौजूदा उत्तर वास्तविक समस्या का समाधान नहीं करता है।
असली समस्या यह थी किXSD मेंxs:complexType
सीधेxs:extension
तौर पर एक बच्चानहीं हो सकता। xs:simpleContent
पहलेउपयोग करने के लिए ठीक है। विवरण का पालन करें ...
आपका XML,
<price currency="euros">20000.00</price>
निम्नलिखित सुधारे गए XSD में से किसी एक के विरुद्ध मान्य होगा :
स्थानीय रूप से परिभाषित विशेषता प्रकार
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="price">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="currency">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="pounds" />
<xs:enumeration value="euros" />
<xs:enumeration value="dollars" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
वैश्विक स्तर पर परिभाषित विशेषता प्रकार
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="currencyType">
<xs:restriction base="xs:string">
<xs:enumeration value="pounds" />
<xs:enumeration value="euros" />
<xs:enumeration value="dollars" />
</xs:restriction>
</xs:simpleType>
<xs:element name="price">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="currency" type="currencyType"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
टिप्पणियाँ
वास्तविक समस्या यह थी कि XSD में xs:complexType
सीधे xs:extension
एक बच्चे के रूप में नहीं हो सकता है ; xs:simpleContent
पहले जरूरत है।
एक संबंधित मामला (जो नहीं पूछा गया था लेकिन अन्य उत्तरों को भ्रमित कर सकता है):
कैसे price
दिया जा सकता है कि यह एक विशेषता है?
इस मामले में, एक अलग, वैश्विक परिभाषा की priceType
आवश्यकता होगी; केवल स्थानीय प्रकार की परिभाषाओं के साथ ऐसा करना संभव नहीं है।
जब तत्व की विशेषता है तो तत्व सामग्री को कैसे प्रतिबंधित करें
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="priceType">
<xs:restriction base="xs:decimal">
<xs:minInclusive value="0.00"/>
<xs:maxInclusive value="99999.99"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="price">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="priceType">
<xs:attribute name="currency">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="pounds" />
<xs:enumeration value="euros" />
<xs:enumeration value="dollars" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>