2009-04-11 13 views
19

सोच रहा था, जैसे कि हम डीटीडी में एक्सएमएल को बांधने के लिए घोषणा का उपयोग करते हैं, हम इसे एक्सएसडी के साथ कैसे करते हैं?आप एक्सएमएल को एक्सएसडी से कैसे जोड़ते हैं?

MSDN नमूना: NoNamespaceSchemaLocation कि चाल करता है:

<?xml version="1.0"?> 
<Product ProductID="123" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="Product.xsd"> 
    <ProductName>Rugby jersey</ProductName> 
</Product> 

यह xsi है? या यह सिर्फ एक और नामस्थान है?

[संपादित करें] और बस हमें एक अनूठा XML नामस्थान देने के लिए

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

..line है, या यह भी जहां स्कीमा स्थित हो सकता है के बारे में जानकारी प्रदान करता है?

उत्तर

17

स्कीमालोकेशन आज़माएं।

<?xml version="1.0"?> 

<note 
xmlns="http://www.w3schools.com" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.w3schools.com note.xsd"> 
    <to>Tove</to> 
    <from>Jani</from> 
    <heading>Reminder</heading> 
    <body>Don't forget me this weekend!</body> 
</note> 

नोनामस्पेस स्केमालोकेशन अलग है। ध्यान दें कि दोनों वास्तव में एक XML दस्तावेज़ के उपभोक्ता के लिए सिद्धांत में केवल "संकेत" हैं। मैंने कभी भी एक एक्सएमएल प्रोसेसर में भाग नहीं लिया है जो उनका पालन नहीं करता है; आखिरकार, यह एक डब्ल्यू 3 सी सिफारिश है। http://www.w3.org/TR/xmlschema-1/

देख लेकिन वास्तव में, यह बिगड़ जाए, here के रूप में कर सकता है, लेकिन फिर, यह एक कारण के लिए एक बग माना जाता है।

कम जाने के लिए: मैं बस यह अब तक पर भरोसा है, :-)

कोई नुकसान के साथ मुझे नहीं लगता कि किसी भी आधा सभ्य XML प्रोसेसर इस 'संकेत' इन दिनों उपेक्षा कर सकते हैं करते हैं।

यूआरएल हमेशा विशिष्टता के लिए होते हैं, लेकिन कुछ मामलों में कुछ जानकारी यूआरएल के तहत प्रदान की जाएगी।

+0

यदि आप ऐसे माहौल में चल रहे हैं जिसमें इंटरनेट तक पहुंच अवरुद्ध है, तो स्कीमा लोड नहीं होंगे। इसके अलावा, आपका वाक्यविन्यास गलत है। यह नामस्थान स्थान नामस्थान स्थान ... –

+2

@ पीटर यह निश्चित रूप से डब्ल्यू 3 सी से नहीं है। w3schools.com के पास डब्ल्यू 3 सी के साथ कुछ लेना देना नहीं है। –

+0

@ जॉन यह सिर्फ W3Schools की एक प्रति है – Peter

4

xsi: noNamespaceSchemaLocation और xsi: schemaLocation दोनों एक्सएमएल प्रोसेसर को संकेत प्रदान करते हैं जो उन संकेतों का पालन करने का निर्णय लेते हैं। लेकिन वे केवल संकेत हैं। वे आपके दस्तावेज़ को स्कीमा के खिलाफ सत्यापित करने की आवश्यकता नहीं है।

3

मैं आम तौर पर केवल नामस्थान शामिल करता हूं और उम्मीद करता हूं कि यदि कोई भी प्रोसेसिंग कर रहा है तो उसे सत्यापित करने की परवाह है, तो उन्हें स्कीमा मिल जाएगा और उनके प्रसंस्करण वातावरण को स्थापित किया जाएगा ताकि यह एक्सएसडी पा सके। मुझे xsi:schemaLocation और ऐसे विशेषताओं के साथ सीमित सफलता मिली है। अधिकांश समस्याएं आमतौर पर एक्सएसडी फ़ाइल को खोजने के आसपास केंद्रित होती हैं। कुछ प्रोसेसर पथ को शामिल करना चाहते हैं जो कि वेब सर्वर की बजाय फ़ाइल सिस्टम पर एक्सएसडी पर मज़ेदार है।

प्रत्येक प्रोसेसर लुकअप को थोड़ा अलग तरीके से लागू करने लगता है। कुछ अलग स्कीमा कैटलॉग ऑब्जेक्ट्स का उपयोग करते हैं, अन्य लोगों को आपको अलग-अलग स्कीमा लोड करने और संलग्न करने की आवश्यकता होती है। जब तक आप दस्तावेजों को संसाधित करने के लिए कोड प्रदान नहीं कर रहे हैं, तो आप xsi:schemaLocation या xsi:noNamespaceSchemaLocation IMHO शामिल करने के लिए सबसे अच्छे हैं। एकमात्र चीज जो उनके समावेशन कर सकती है वह हैमस्ट्रिंग जो भी आपके दस्तावेज़ को उसी स्थान पर स्कीमा को रखने में संसाधित कर रहा है या अपने चुने हुए प्रोसेसर को स्थान विनिर्देश को अनदेखा करने या काम करने के लिए कुछ रास्ता ढूंढ रहा है।

एक साइड नोट के रूप में, मैंने जो सबसे बड़ी समस्या में भाग लिया है वह वास्तव में डीटीडी के साथ था जो SYSTEM घोषणा का उपयोग करके निर्दिष्ट किया गया था जो "c:\somepath\doc.dtd" को संदर्भित करता है। समस्या यह थी कि मैं एक फ्रीबीएसडी बॉक्स पर दस्तावेजों को संसाधित कर रहा था। मैंने विंडोज़-स्टाइल पथ को स्थानीय फाइल सिस्टम में मैप करने के लिए अपना खुद का रिज़ॉल्यूशन लिखना समाप्त कर दिया क्योंकि मैं दस्तावेजों को स्वयं संशोधित नहीं कर सका और उन्हें सत्यापित करने की आवश्यकता थी।

3

यह एक बेवकूफ सवाल नहीं है, लेकिन John Saunders has it right है।

जैसे ही हम डीटीडी में एक्सएमएल को बांधने के लिए डिस्क्लेरेशन का उपयोग करते हैं, हम एक्सएसडी के साथ इसे कैसे करते हैं?

यहां समस्या का सार है - आप नहीं कर सकते। डीटीडी दृष्टिकोण के साथ समस्याओं में से एक यह था कि दस्तावेज सत्यापन तंत्र निर्दिष्ट करता है न कि दस्तावेज उपभोक्ता। पोस्ट-डीटीडी, आप एक्सएमएल दस्तावेज़ ले सकते हैं और इसे एक्सएसडी या रीलाक्स एनजी या कुछ अन्य तंत्र के साथ मान्य कर सकते हैं - वे decoupled (कम से कम सिद्धांत में) हैं। कोई भी एक्सएसडी लिंक केवल एक संकेत है और वैकल्पिक है। It is not possible to validate an arbitrary document

+0

@McDowell: बहुत बहुत धन्यवाद। –

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