2012-01-18 30 views
7

यह foo.xsd में अपने मौजूदा XSD स्कीमा, कि बस प्रकार वाणी है:रूट स्कीमा में एक्सएसडी प्रकार कैसे आयात करें?

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" 
    targetNamespace="foo"> 
    <xs:import schemaLocation="foo.xsd" namespace="foo" /> 
    <xs:element name="RootElement" type="alpha"/> 
</xs:schema> 

यह मैं क्या SAX से हो रही है है:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" 
    targetNamespace="foo"> 
    <xs:complexType name="alpha"> 
    <!-- skipped --> 
    </xs:complexType> 
</xs:schema> 

यह एक और स्कीमा, उस तत्व की घोषणा की है जावा में पार्सर:

"The namespace attribute 'foo' of an <import> element information 
item must not be the same as the targetNamespace of the schema it exists in." 

क्या मैं गलत कर रहा हूँ?

उत्तर

14

जब शामिल एक्सएसडी के लक्ष्य नामस्थान (टीएनएस) विशेषता निर्दिष्ट हैं और वही, केवल xsd: शामिल है अनुमति है (एक लक्ष्य नामस्थान विशेषता में उसके मूल्य के रूप में खाली स्ट्रिंग नहीं हो सकती है)।

हालांकि, किसी एक स्कीमा (एस 2) से एक स्कीमा (एस 2) के बिना एक स्कीमा (एस 1) शामिल हो सकता है जिसमें टीएनएस होता है; शुद्ध प्रभाव एस 1 घटक एस 2 स्कीमा के नामस्थान मानते हैं। इस उपयोग को अक्सर गिरगिटिक संरचना के रूप में जाना जाता है।

एसओ पर एक संदर्भ दो के बीच अंतर का वर्णन करने वाला एक संदर्भ है, here है।

+0

बहुत बहुत धन्यवाद, यह वही है जो मैं ढूंढ रहा था! – yegor256

+0

"tns" "targetNamespace" जैसा ही है? – Line