2010-01-18 12 views
8

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

प्रश्न:

  • किसी भी बच्चों
  • कोई गुण
  • किसी भी नाम है नहीं है नहीं है (: कैसे मैं एक XSD स्कीमा में एक तत्व निम्नलिखित गुण है कि परिभाषित करते हैं कि के कारण समस्याओं क्या)
+0

एक्सएसडी के साथ यह संभव नहीं है ..: - | –

+0

अकेले xsd के साथ यह संभव नहीं है - xml इंस्टेंस दस्तावेज़ को तत्व प्रकार को प्रतिबंधित करने की आवश्यकता है। – Filburt

उत्तर

6

आपके साथ एक साथ <xsd:any /> तत्व का उपयोग कर सकते है 0।

स्कीमा

<?xml version="1.0" encoding="utf-8" ?> 
<xsd:schema attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="root"> 
     <xsd:complexType> 
      <xsd:sequence maxOccurs="unbounded"> 
       <xsd:any processContents="strict" namespace="##local"></xsd:any> 
      </xsd:sequence> 
     </xsd:complexType> 
    </xsd:element> 
    <xsd:simpleType name="st"> 
     <xsd:restriction base="xsd:string" /> 
    </xsd:simpleType> 
</xsd:schema> 

टेस्ट Xml उदाहरण

<?xml version="1.0" encoding="utf-8"?> 
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <!-- valid --> 
    <one xsi:type="st">value one</one> 
    <emptyone xsi:type="st"/> 

    <!-- invalid --> 
    <two name="myname" xsi:type="st">value two</two> 

    <!-- invalid --> 
    <three xsi:type="st"> 
     <four xsi:type="st">value four</four> 
    </three> 
</root> 

निष्कर्ष

आप XSD sche में एक साधारण प्रकार लागू नहीं कर सकते हैं एम अकेले

+0

नहीं मैं नहीं कर सकता। xsd: कोई भी मनमाने ढंग से संरचना की अनुमति देगा जबकि मैं किसी भी नाम तत्व (बच्चों) को बच्चों या विशेषताओं के लिए नहीं चाहता हूं। – GSerg

+0

उस स्थिति में ऐसा लगता है कि आपकी आवश्यकताएं पारस्परिक रूप से अनन्य हैं। – Filburt

+0

क्यों? वे नहीं हैं, AFAIC। कोई भी मान तत्व पात्र है, भले ही वास्तविक पाठ "नोड" होता है, जबकि नहीं है। – GSerg