2009-05-27 11 views
6

हाय मैं एक्सएसडी, एक्सएमएल और नेमस्पेस के आसपास अपना मन प्राप्त करने की कोशिश कर रहा हूं लेकिन मैं उन चीज़ों को काम करने के लिए नहीं कर सकता हूं जिनसे मैं चाहता हूं।आयात और नामस्थान के साथ एक्सएसडी

मैं एक XSD जो, इस समय, इस तरह शुरू होता है: तब मैं

<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" 
      targetNamespace="http://www.example.com" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns="http://www.example.com"> 

:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns="http://www.example.com"> 
    <xs:import namespace="http://www.example.com" schemaLocation="Include.xsd" /> 

आप देख सकते हैं, यह एक XSD फ़ाइल है, जो इस तरह शुरू होता है आयात करता है इस स्कीमा के आधार पर कुछ एक्सएमएल दस्तावेज़ हैं:

<foobar> 
    <whatever>.... 

असल में मुझे परवाह नहीं है कि नामस्थान क्या हैं, मैं जू डर्न चीज काम करने के लिए चाहते हैं। पहले मैं किसी भी नामस्थान का उपयोग नहीं कर रहा था, लेकिन ऐसा लगता है कि मुझे एक एक्सएसडी आयात करने के लिए उन्हें उपयोग करना होगा। मैं जो नहीं करना चाहता हूं उसे अपने एक्सएमएल दस्तावेजों के सभी तत्वों को उपसर्ग देना है।

इस लक्ष्य को हासिल करने के लिए, मूल्यों का क्या संयोजन मैं विभिन्न विशेषताओं (targetNamespace, नाम स्थान, xmlns, elementFormDefault आदि) XSD और XML दस्तावेज़ों में के लिए की आवश्यकता है?

वर्तमान में, आयातित एक्सएसडी दस्तावेज़ में परिभाषित किसी भी तत्व को XML में नेमस्पेस योग्यता की आवश्यकता होती है।

+0

अपने दस्तावेज़ वास्तव में meaninging आप एक 'xml' तत्व स्कीमा में से एक के रूप में परिभाषित है, या आप मतलब दस्तावेज़ के साथ शुरू होता है के साथ शुरू होता है? – Jherico

+0

मेरा मतलब था कि रूट xml था - मैंने इसे भ्रम से बचने के लिए ठीक कर दिया है। – cbp

उत्तर

13

आप नामस्थान का उपयोग नहीं कर रहे हैं, तो या अपने स्कीमा एक ही नामस्थान का हिस्सा है, तो आप बहुत से बेहतर होगा XS का उपयोग कर: XS बजाय शामिल हैं: आयात। स्कीमा ए में स्कीमा बी शामिल हो सकता है यदि बी या तो ए के समान नामस्थान है या उसके पास कोई नेमस्पेस घोषित नहीं है (यदि उत्तरार्द्ध मामला है, तो बी शामिल होने पर समकक्ष के नामस्थान को गोद लेता है)। तो ... की तरह कुछ:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns="http://www.example.com"> 
    <xs:include schemaLocation="Include.xsd" /> 

<!-- ... --> 

</xs:schema> 
+0

आह ठीक है! धन्यवाद – cbp

1

मुझे लगता है कि यदि आप अपने एक्सएमएल तत्वों पर उपसर्गों से बचना चाहते हैं तो आपको अपने तत्व फर्मडिफॉल्ट को "अयोग्य" पर सेट करने की आवश्यकता है। बाकी ठीक होना चाहिए, मुझे लगता है - नामस्थान आपके मास्टर और आपके आयातित एक्सएसडी के बीच समान है - यह ठीक है। आप xmlns = उपसर्ग के बिना निर्दिष्ट करते हैं - यह ठीक है। आप जाने के लिए तैयार हैं।

मार्क

+0

धन्यवाद, आप सही हैं - मैं सोचने के करीब था। हालांकि मुझे लगता है कि जब मैं अपना एक्सएमएल दस्तावेज तैयार करता हूं, आयातित एक्सएसडी में परिभाषित तत्वों की आवश्यकता होती है कि नेमस्पेस निर्दिष्ट किया जाए (भले ही आयातित एक्सएसडी और वास्तविक एक्सएसडी दोनों में तत्वफॉर्मडिफॉल्ट 'अयोग्य' पर सेट हो)। – cbp