2013-09-03 10 views
6

में एक अलग नेमस्पेस के लिए एक विशेषता घोषित करना मैं एक एक्सएमएल प्रारूप का उपयोग कर रहा हूं जो विभिन्न मौजूदा प्रारूपों और कुछ कस्टम तत्वों और विशेषताओं का मिश्रण है, और मैंने सोचा कि मुझे उन कस्टम बिट्स के लिए स्कीमा लिखना चाहिए।एक्सएमएल स्कीमा

<ns1:something attA="b" attB="a" ns2:extraAtt="c"/> 

मैं समझता हूँ कि ऐसा करने से अनुमति दी है लेकिन मुझे नहीं लगता कर सकते हैं कि XML स्कीमा में मेरे "extraAtt" घोषित करने के लिए कैसे या:

एक बात मैं कर उपयोग कस्टम मौजूदा स्वरूप में तत्वों पर जिम्मेदार बताते हैं, इस तरह है एक डीटीडी में, बदतर।

मैंने specification पढ़ने की कोशिश की है, लेकिन जहां तक ​​मुझे चिंतित है, चीनी में भी लिखा जा सकता है। अधिकांश ट्यूटोरियल केवल "नाम", "प्रकार", और "उपयोग" के बारे में बात करते हैं, उदा। this one और that one

उत्तर

6

प्रत्येक स्कीमा दस्तावेज़ एक नामस्थान के लिए घटकों (स्कीमा के टुकड़े) को परिभाषित करता है।

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://example.com/my-ns2"> 
    <xs:attribute name="extraAtt" type="xs:anySimpleType"/> 
</xs:schema> 

तत्व Ns1 भी की घोषणा: ns2:extraAtt आप इस तरह एक स्कीमा दस्तावेज़ कुछ चाहते हैं तो अपने विशेषता परिभाषित करने के लिए कुछ, इस विशेषता के लिए किसी भी तरह की अनुमति देने की आवश्यकता होगी या तो एक विशेषता संदर्भ (<xs:attribute ref="ns2:extraAtt"/>) के साथ या एक साथ विशेषता वाइल्डकार्ड (<xs:anyAttribute namespace="http://example.com/my-ns2"/> या इसी तरह)।


spec की सुवार्ता के बारे में खेद है; यह एक लंबी कहानी है, लेकिन अनिवार्य रूप से डब्लूजीजी के कुछ सदस्यों ने नहीं सोचा था कि आपके जैसे लोग मौजूद हैं ("कार्यान्वयनकर्ताओं को छोड़कर कोई भी नहीं पढ़ता है, और जब तक वे शिकायत नहीं करते हैं कि यह पर्याप्त पठनीय है" - कम से कम, यही वह था उन्होंने कहा कि कुछ कार्यान्वयन करने वालों ने जोर से और कड़वाहट से शिकायत की थी, फिर उन्होंने विषय बदल दिया)।

+0

के लिए धन्यवाद जवाब! मैं थोड़ा निराश हूं हालांकि मेरे एक्सएमएल दस्तावेज वैध नहीं हो सकते हैं अगर एनएस 1 के लिए स्कीमा के लेखकों के पास विस्तार की अनुमति देने का दूरदर्शिता नहीं है। ;-) यदि एनएस 1 का प्रारूप केवल डीटीडी में परिभाषित किया गया है, जहां तक ​​मुझे पता है कि xs के बराबर नहीं है: anyAttribute, क्या यह मेरे दस्तावेज़ को वैध या अमान्य बनाता है? (मुझे आशा है कि मैं समझ में आ रहा हूं।) – scozy

+1

एक शब्द का निश्चित अर्थ यह है कि इसका क्या अर्थ है। तत्व ns1 का निश्चित: कुछ कहता है कि वे वैध उदाहरण के रूप में क्या गिनना चाहते हैं। शब्द * वैध * एक तकनीकी शब्द है जो किसी दस्तावेज़ के संबंध को किसी दिए गए स्कीमा में वर्णित करता है; डीटीडी वैधता को डीटीडी नोटेशन में लिखे गए स्कीमा के संदर्भ में परिभाषित किया गया है, एक्सएसडी स्कीमा के मामले में एक्सएसडी वैधता; न तो मिश्रित-स्कीमा-भाषा सत्यापन के लिए पूरा करता है। चाहे आप के लिए महत्वपूर्ण है, इस पर निर्भर करता है कि आप दस्तावेज़ को वैध क्यों होना चाहते हैं। –

1

सिर्फ विशेषता की घोषणा करने के लिए आप इस XSD का उपयोग कर सकते हैं:

<xs:schema 
    targetNamespace="theNamespaceUri" 
    elementFormDefault="qualified" 
    attributeFormDefault="qualified" 
    xmlns="theNamespaceUri" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:attribute name="extraAtt" type="xs:string"> 
    </xs:attribute> 

</xs:schema> 

(यह मानते हुए extraAtt एक सरल स्ट्रिंग है - आप किसी भी प्रकार का उपयोग कर सकते हैं, या किसी मौजूदा प्रकार आदि प्रतिबंधित)

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