2016-03-30 3 views
6

का उपयोग करते समय xmllint सत्यापन त्रुटि "कोई डीटीडी नहीं मिली" मैं मूल एक्सएसडी यानी एक्सएमएल स्कीमा स्कीमा विकसित करते समय अपने काम की जांच करने के लिए xmllint का उपयोग करने की कोशिश कर रहा हूं। हालांकि यह मुझे एक त्रुटि दे रहा हैएक्सएमडी

प्रमाणीकरण विफल: कोई डीटीडी नहीं मिला।

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

मेरे xmllint आदेश:

xmllint --noout --valid --schema simple.xsd lucas-basic.xml 
lucas-basic.xml:5: validity error : Validation failed: no DTD found ! 
     > 
     ^
lucas-basic.xml validates 

टेस्ट XSD फ़ाइल:

<?xml version = "1.0" encoding = "UTF-8"?> 
<!--Generated by XML Authority. Conforms to w3c http://www.w3.org/2001/XMLSchema--> 
<xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema"> 
     <xsd:element name = "vehicles"> 
       <xsd:complexType> 
         <xsd:sequence> 
           <xsd:element name = "nickname" type = "xsd:string" maxOccurs = "unbounded"/> 
         </xsd:sequence> 
       </xsd:complexType> 
     </xsd:element> 

टेस्ट एक्सएमएल फ़ाइल:

<?xml version="1.0"?> 
<vehicles 
       xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
       xsi:noNamespaceSchemaLocation = "http://lucas.ucs.ed.ac.uk/xml-schema/xmlns/simple.xsd" 
     > 
     <nickname>Bog Hopper</nickname> 
     <nickname>Wee Beastie</nickname> 
     <nickname>Count Zero</nickname> 
</vehicles> 

xsi पर यूआरएल: noNamespaceSchemaLocation ऊपर XSD वापसी करता है। इसके अलावा, मैंने xsd फ़ाइल डाउनलोड की है और इसे एक अतिरिक्त उपाय के रूप में वर्तमान निर्देशिका में डाल दिया है, लेकिन ऐसा लगता है कि ऐसा कुछ भी नहीं बदला है।

+0

अब जब मैं इसे काम कर रहा हूं तो मुझे टिप्पणी करनी चाहिए कि स्थानीय फ़ाइल का उपयोग करना या दूरस्थ स्कीमा निर्दिष्ट करना समान रूप से अच्छी तरह से काम करता है। --chechema simple.xsd OR --chechema http://lucas.ucs.ed.ac.uk/xml-schema/xmlns/simple.xsd – Tristan

उत्तर

10

--valid डीटीडी के लिए है, एक्सएसडी नहीं।

यह बजाय आप के लिए काम करेंगे:

xmllint --noout --schema http://lucas.ucs.ed.ac.uk/xml-schema/xmlns/simple.xsd lucas-basic.xml 
+0

ऐसा लगता है कि धन्यवाद! क्या इसका मतलब यह है कि एक डीटीडी के बजाय एक्सएसडी का उपयोग करके लिखा गया दस्तावेज़ तकनीकी रूप से मान्य एक्सएमएल नहीं है? – Tristan

+3

हाहा, नहीं, इसका मतलब है कि कमांड लाइन स्विच नामों की उनकी पसंद अपूर्ण थी। – kjhughes

-1

ओपी प्रयास और स्वीकार किए जाते हैं जवाब एक नमूना फ़ाइल के खिलाफ यह परीक्षण से XSD "मान्यकरण"। XSD विनिर्देश के खिलाफ XSD फ़ाइल को मान्य करने के लिए, निम्न आदेश किया जा सकता है:

xmllint --noout --schema http://www.w3.org/2001/XMLSchema.xsd my_schema.xsd 

... और v1.1 के लिए स्कीमा https://www.w3.org/2009/XMLSchema/XMLSchema.xsd

नोट है: v1.0 स्कीमा कुछ योग्यता है मानक संरचना स्कीमा के बारे में शीर्ष पर, इसलिए यह संभव है कि एक और फ़ाइल वास्तव में उपयोग की जानी चाहिए लेकिन यह मेरे लिए ठीक काम करता है।