2010-12-21 10 views
13

मैं एक एक्सएमएल स्कीमा बनाने की कोशिश कर रहा हूं जो एक्सएमएल को कैप्चर कर सकता है जो ऐसा कुछ दिखता है:SimpleType और विशेषता के लिए एक्सएमएल स्कीमा?

<tagname description="simple string type attribute"> 
false <!-- simple boolean type --> 
</tagname> 

लेकिन कठिनाइयों में चल रहा हूं। क्या यह कैप्चर करने के लिए स्कीमा को परिभाषित करना भी संभव है या मैं snipe hunt पर हूं?

उत्तर

33

यहां आपको

<xs:element name="tagname"> 
     <xs:complexType> 
      <xs:simpleContent> 
       <xs:extension base="xs:boolean"> 
        <xs:attribute name="description" type="xs:string" use="required"/> 
       </xs:extension> 
      </xs:simpleContent> 
     </xs:complexType> 
    </xs:element> 

और यहाँ मान्य नमूना

<tagname xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="file:/C:/Untitled2.xsd" description="123"> 
    true 
</tagname> 
1

धन्यवाद, धन्यवाद, धन्यवाद है। मैं थोड़ी देर के लिए इस समस्या से जूझ रहा हूं और वास्तव में यह स्पष्ट नहीं है कि स्कीमा को कैसे परिभाषित किया जाए, भले ही वास्तविक एक्सएमएल नमूना काफी आगे है। मेरी सबसे बड़ी समस्या यह थी कि इसे संभालने के लिए जेएक्सबी कक्षा को कैसे बनाया जाए। यह तब तक था जब तक मैंने आपकी स्कीमा परिभाषा नहीं देखी और इसे xjc के माध्यम से चलाया कि मैं यह देखने में सक्षम था कि इसे JAXB में कैसे सेट अप किया जाए। जेएक्सबी जावा कक्षाएं बहुत ही सहज ज्ञान युक्त आईएमएचओ हैं और मैंने कभी अनुमान लगाया होगा कि इसे कैसे सेट अप किया जाए। मैंने बिना किसी सफलता के काम करने के कई अलग-अलग तरीकों की कोशिश की है।

नीचे जेएक्सबी जावा क्लास का एक नमूना है जो आपके पोस्ट स्कीमा से उत्पन्न होता है। कुंजी मैदान पर @XmlValue एनोटेशन उपयोग कर रहा है (आप भी क्षेत्र के गेटर पर इसका इस्तेमाल लेकिन XmlAccessorType टिप्पणी निकालने कर सकते हैं:

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "", propOrder = { "value" }) 
@XmlRootElement(name = "tagname") 
public class Tagname { 

    @XmlValue 
    protected boolean value; 
    @XmlAttribute(name = "description", required = true) 
    protected String description; 

    public boolean isValue() { 
    return value; 
    } 

    public void setValue(boolean value) { 
    this.value = value; 
    } 

get and set for description omitted. 

यहाँ किसी वर्ग से मार्शल JAXB XML दस्तावेज़ है:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<tagname description="The Description">true</tagname> 

मुझे आशा है कि यह इसके अलावा अन्य लोगों से अस्पष्ट समस्या के साथ संघर्ष कर रहे हैं मदद मिलेगी।

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