2012-03-21 25 views
7

में अलग URI के साथ कई नामस्थान को संभालने के लिए मैं एक एक्सएमएल (first.xml) जो की तरह ::कैसे XSD

<?xml version="1.0" encoding="utf-8"?> 
<saw:jobInfo xmlns:saw="com.analytics.web/report/v1.1">  
     <saw:jobStats>...........</saw:jobStats>  
     <saw:detailedInfo> .....</saw:detailedInfo>  
     <saw:fileInfo>..........</saw:fileInfo> 
</saw:jobInfo> 

नीचे एक्सएमएल (second.xml) लग रहा है ऊपर, लेकिन एक साथ के रूप में ही है अलग नामस्थान।

<?xml version="1.0" encoding="utf-8"?> 
<soap:jobInfo xmlns:soap="urn://bi.webservices/v6"> 
    <soap:jobStats>...........</saw:jobStats> 
    <soap:detailedInfo> .....</saw:detailedInfo>  
    <soap:fileInfo>..........</saw:fileInfo> 
</soap:jobInfo> 

मैं एक ही तत्व है और नाम दोनों एक्सएमएल के दशक में मैं एक ही XSD फ़ाइल उपयोग कर रहा हूँ दोनों को मान्य करने का श्रेय जाता है।

XSD फ़ाइल ::

<?xml version="1.0" encoding="utf-8" ?> 
<xs:schema targetNamespace="com.analytics.web/report/v1.1"  
    xmlns="com.analytics.web/report/v1.1" 
    xmlns:saw="com.analytics.web/report/v1.1" 
    xmlns:soap="urn://bi.webservices/v6" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified" 
    attributeFormDefault="unqualified"> 

xmlns सहित के बाद: साबुन =: ": jobinfo साबुन" "कलश //bi.webservices/v6" स्कीमा मान्यता second.xml के लिए कह अज्ञात तत्व विफल रहा है। मैंने चारों ओर पोक किया और लक्ष्य पाया कि नेमस्पेस मान नामस्थान यूआरआई के समान होना चाहिए। कृपया मुझे बताएं कि अलग-अलग यूआरआई वाले दो अलग-अलग नामस्थानों के लिए एक ही एक्सएसडी का उपयोग कैसे करें।

उत्तर

14

संक्षिप्त उत्तर आप नहीं कर सकते हैं। हालांकि, यदि आप तीन एक्सएसडी का उपयोग करेंगे तो आप कर सकते हैं। यह आपको सभी एक्सएसडी रखने की अनुमति देगा जो एक फ़ाइल (चेमेलेन.एक्सएसडी) में मायने रखती है, और दो और हैं जो आसानी से Chameleon.XSD लिखते हैं, उन दोनों में नामस्थान हैं जिन्हें आप चाहते हैं।

Chameleon.XSD

<?xml version="1.0" encoding="utf-8"?> 
<!--W3C Schema generated by QTAssistant/W3C Schema Refactoring Module (http://www.paschidev.com)--> 
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="jobInfo"> 
    <xsd:complexType> 
     <xsd:sequence> 
     <xsd:element name="jobStats" type="xsd:string" /> 
     <xsd:element name="detailedInfo" type="xsd:string" /> 
     <xsd:element name="fileInfo" type="xsd:string" /> 
     </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
</xsd:schema> 

JobInfo1.xsd

<?xml version="1.0" encoding="utf-8"?> 
<!--W3C Schema generated by QTAssistant/W3C Schema Refactoring Module (http://www.paschidev.com)--> 
<xsd:schema xmlns="com.analytics.web/report/v1.1" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="com.analytics.web/report/v1.1" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:include schemaLocation="Chameleon.xsd"/> 
</xsd:schema> 

JobInfo2.xsd

<?xml version="1.0" encoding="utf-8"?> 
<!--W3C Schema generated by QTAssistant/W3C Schema Refactoring Module (http://www.paschidev.com)--> 
<xsd:schema xmlns="urn://bi.webservices/v6" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn://bi.webservices/v6" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:include schemaLocation="Chameleon.xsd"/> 
</xsd:schema> 

रिश्ते:

Chameleon relationships

यदि आप चाहते हैं कि एक एक्सएसडी उन सभी को मान्य करे, तो आप जा सकते हैं और चौथे एक का निर्माण कर सकते हैं, जो इन दोनों को आयात करता है।

OneAll.XSD

<?xml version="1.0" encoding="utf-8"?> 
<!--XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com)--> 
<xsd:schema xmlns="urn:tempuri-org:XSD:1" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:tempuri-org:XSD:1" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:import namespace="com.analytics.web/report/v1.1" schemaLocation="JobInfo1.xsd"/> 
    <xsd:import namespace="urn://bi.webservices/v6" schemaLocation="JobInfo2.xsd"/> 
</xsd:schema> 

अपडेट किया गया रिश्तों:

One all

+0

@@ Petru: धन्यवाद उत्तर के लिए एक बहुत। मैं एक Chameleon.XSD नहीं बना सकता क्योंकि कई एक्सएसडी हैं। कृपया इसे आरेख के साथ या उदाहरण के साथ समझाएं ताकि मैं इसे बेहतर समझ सकूं। – prathima

+1

@prathima, मैंने अपनी प्रतिक्रिया को अद्यतन किया है, बस समय ... यदि आपके पास वास्तव में जटिल योजनाएं हैं जिनमें अन्य नामस्थान शामिल हैं, तो आप जो भी चाहते हैं उसे प्राप्त नहीं कर सकते हैं, गिरगिट या नहीं। एक गिरगिट का विचार स्कीमा के नामस्थान को मानना ​​है जो इसे लिखता है। तो आप नकल किए बिना, अलग-अलग नामस्थानों में समान संरचनाएं रख सकते हैं। याद रखने की एक बात यह है कि एक एक्सएसडी = एक नामस्थान। –

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