में बाल तत्वों को शामिल नहीं किया गया है, मैंने एक एक्सएसडी रखा है और इसके बाहर कक्षाएं उत्पन्न करने के लिए जेएक्सबी का उपयोग किया है।जेएक्सबी माता-पिता को नेमस्पेस जोड़ रहा है लेकिन
यहाँ मेरी XSDs-
myDoc.xsd :
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.mydoc.org"
targetNamespace="http://www.mydoc.org"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:mtp="http://www.mytypes.com" elementFormDefault="qualified">
<xs:import namespace="http://www.mytypes.com" schemaLocation="mytypes.xsd" />
<xs:element name="myDoc">
<xs:complexType>
<xs:sequence>
<xs:element name="crap" type="xs:string"/>
<xs:element ref="mtp:foo"/>
<xs:element ref="mtp:bar"/>
</xs:sequence>
</xs:complexType>
</xs:element>
mytypes.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.mytypes.com"
xmlns="http://www.mytypes.com"
xmlns:tns="http://www.mytypes.com"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:element name="foo" type="tns:Foo"/>
<xs:element name="bar" type="tns:Bar"/>
<xs:element name="spam" type="tns:Spam"/>
<xs:simpleType name="Foo">
<xs:restriction base="xs:string"></xs:restriction>
</xs:simpleType>
<xs:complexType name="Bar">
<xs:sequence>
<xs:element ref="spam"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="Spam">
<xs:restriction base="xs:string" />
</xs:simpleType>
</xs:schema>
दस्तावेज़ है-
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<myDoc xmlns:ns2="http://www.mytypes.com">
<crap>real crap</crap>
<ns2:foo>bleh</ns2:foo>
<ns2:bar>
<spam>blah</spam>
</ns2:bar>
</myDoc>
ध्यान दें कि <spam>
एलिमेंट डिफ़ॉल्ट नेमस्पेस का उपयोग करता मार्शल कर रहे हैं। मैं इसे ns2
नामस्थान का उपयोग करना चाहता हूं। स्कीमा (mytypes.xsd) इस तथ्य को व्यक्त करता है कि <spam>
<bar>
के भीतर निहित है जो XML उदाहरण में ns2
नामस्थान से जुड़ा हुआ है।
मैंने इस सप्ताह अपने सिर को एक हफ्ते से तोड़ दिया है और मुझे ns2
उपसर्ग <spam>
में दिखाई देने के लिए चाहिए। मुझे क्या करना चाहिए?
आवश्यक:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<myDoc xmlns:ns2="http://www.mytypes.com">
<crap>real crap</crap>
<ns2:foo>bleh</ns2:foo>
<ns2:bar>
<ns2:spam>blah</ns2:spam><!--NS NS NS-->
</ns2:bar>
</myDoc>
मैं JAXB-2.1.11 का उपयोग कर रहा JDK1.5 साथ। मैंने जेनरेट की गई कक्षाओं और पैकेज-info.java फ़ाइल को हाथ से संपादित नहीं किया है। Bar.java @XmlType हूँ- टिप्पणी की जाती है (नाम = "बार" नाम स्थान = "http://www.mytypes.com" propOrder = { "स्पैम"}) package-info.java @XmlSchema शामिल (नेमस्पेस = "http://www.mydoc.org", elementFormDefault = XmlNsForm.QUALIFIED) – Nishant
दिलचस्प बात यह है कि मैं एक दस्तावेज़ को मार्शल कर सकता हूं और इसे पूरी तरह से ठीक से अनमशॉल कर सकता हूं। AFAIU, एक्सएमएल उदाहरण बताता है कि शून्य नामस्थान से संबंधित है और इसकी परिभाषा नहीं मिलनी चाहिए –
Nishant