2009-10-18 13 views
5

मैं एक ऐसा टूल ढूंढ रहा हूं जो मुझे एक्सएमएल स्कीमा सत्यापन विफलताओं के सभी बताएगा। मैंने जो अन्य टूल्स देखे हैं, बस मुझे पहले जोड़े को बताएं, और फिर मुझे उनको ठीक करना होगा इससे पहले कि यह मुझे अगली त्रुटियों को बताए। मुझे एहसास है कि कुछ त्रुटियां अलग-अलग ऑर्डर में होने वाले अन्य नोड्स पर निर्भर हो सकती हैं, लेकिन डेटा प्रकारों जैसी चीजों को गलत स्वरूपित किया जाना चाहिए, भले ही नोड गलत क्रम में हों।पूर्ण एक्सएमएल स्कीमा प्रमाणीकरण

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

एक प्रोग्रामिंग लाइब्रेरी या तकनीक जो मुझे .NET या डेल्फी में करने देगी, वह काम करेगी।

उत्तर

3

मैं XMLNotepad एक बहुत का उपयोग करें। (मुझे नहीं पता कि आपने पहले ही यह कोशिश की है या नहीं।)

यह मुफ्त है और एक साथ कई त्रुटियों की रिपोर्ट करने में एक अच्छी नौकरी करता है, बशर्ते वे स्वतंत्र हों और टर्मिनल न हों! डेल्फी में कंपाइलर त्रुटियों के समान ही: एक बार यह झूठी ट्रैक पर शुरू हो जाने के बाद सब कुछ बकवास होता है।

भी हो, यह बहुत अच्छी तरह से मुझे TVB 3.2 ...

+0

आपको XMLtools प्लग-इन इंस्टॉल करना होगा, लेकिन ऐसा लगता है कि यह बहुत अच्छा काम करता है, धन्यवाद! http://sourceforge.net/projects/npp-plugins/ –

+0

ऑक्सीजनएक्सएमएल यह भी करता है - शायद बेहतर भी। मैंने एक और जवाब में एक पूर्ण लेखन किया। –

2

हाथ में यह मुद्दा यह है कि एक XML स्कीमा आपके XML दस्तावेज़ के लिए भाषा को परिभाषित करता है। सत्यापनकर्ता तब आपके एक्सएमएल दस्तावेज़ को उस भाषा विनिर्देश के साथ 'संकलित' करने का प्रयास करता है।

फिक्स्ड भाषाओं (जैसे डेल्फी या सी #) वाले अधिकांश कंपाइलरों के लिए, एक से अधिक त्रुटि की रिपोर्ट करने के लिए पर्याप्त आराम करने में काफी समय लगा।

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

मैं यह कर किसी भी उत्पाद के बारे में सुनिश्चित नहीं कर रहा हूँ, लेकिन कुछ पेटेंट चीजें हैं जो यह कर सकता है के लिए दायर कर रहे हैं: http://www.faqs.org/patents/app/20080228810 और http://www.faqs.org/patents/app/20080229292

नोट इन 2008 में दायर किया गया है!

--jeroen

1

मुझे लगता है कि समस्या एक बार एक स्कीमा किसी भी एक कारण से अमान्य है, और कुछ इस प्रकार है कि अविश्वसनीय है कि इतने किसी भी आगे की मान्यता विफलताओं भ्रामक हो सकता है। "यह दस्तावेज मान्य है" से परे सत्यापन करने की आवश्यकता शायद उपकरण कंपनियों के हित को आकर्षित करने की आवश्यकता को विशेष रूप से विशेषीकृत है।

बड़े पैमाने पर उपयोगों के लिए एक वैधकर्ता के दृष्टिकोण से इसे रखा जाएगा, विफलता का सामना करने के बाद सत्यापन जारी रखना समझ में नहीं आता है। दस्तावेज़ पहले से कहीं अधिक अमान्य नहीं बन सकता है और इसे अमान्य होने के लिए निर्धारित होने के बाद वैध होने के लिए खोजा नहीं जा सकता है।

शायद यह समझने में उपयोगी होगा कि आप ऐसा क्यों करना चाहते हैं?

उदा। यदि आप किसी स्कीमा के अनुरूप दस्तावेज़ को प्रारूपित करने का प्रयास कर रहे हैं, तो ऐसे टूल हैं जो आपके लिए किसी दिए गए स्कीमा से उदाहरण दस्तावेज़ उदाहरण उत्पन्न करना चाहिए, संदर्भ या उदाहरण/टेम्पलेट के रूप में कार्य करने के लिए।

2

सी # में यह कोड बस इतना करना चाहिए - यह पूरे एक्सएमएल को स्कैन करेगा और इसे प्रदान किए गए एक्सएसडी के खिलाफ मान्य करेगा, और यह सभी सत्यापन त्रुटियों (या स्कीमा में त्रुटियों को भी!) के रूप में थूक देगा। उम्मीद है की यह मदद करेगा!

जिस तरह से आप यह होगा का उपयोग करें:

MyXmlValidator (name of XML file) (name of XSD file) 

सब वहाँ है कि!

मार्क


static void Main(string[] args) 
    { 
     ShowTitle(); 

     if(args.Length < 2) 
     { 
      ShowUsage(); 
      return; 
     } 

     string xmlFileName = args[0]; 
     string xsdFileName = args[1]; 

     if(!File.Exists(xmlFileName)) 
     { 
      ShowError(string.Format("XML File '{0}' does not exist)", xmlFileName)); 
      return; 
     } 

     if (!File.Exists(xsdFileName)) 
     { 
      ShowError(string.Format("XSD schema '{0}' does not exist)", xsdFileName)); 
      return; 
     } 

     StreamReader xsdReader = new StreamReader(xsdFileName); 

     XmlSchema Schema = new XmlSchema(); 
     Schema = XmlSchema.Read(xsdReader, new ValidationEventHandler(XSDValidationEventHandler)); 

     XmlReaderSettings ReaderSettings = new XmlReaderSettings();  
     ReaderSettings.ValidationType = ValidationType.Schema;     
     ReaderSettings.Schemas.Add(Schema); 

     ReaderSettings.ValidationEventHandler += new ValidationEventHandler(XMLValidationEventHandler); 

     XmlTextReader xmlReader = new XmlTextReader(xmlFileName); 
     XmlReader objXmlReader = XmlReader.Create(xmlReader, ReaderSettings); 

     while (objXmlReader.Read()) 
     { } 

     Console.WriteLine("Successful validation completed!"); 
    } 

    private static void XSDValidationEventHandler(object sender, ValidationEventArgs e) 
    { 
     Console.WriteLine("Error reading XSD: " + e.Message); 
    } 

    private static void XMLValidationEventHandler(object sender, ValidationEventArgs e) 
    { 
     Console.WriteLine("Validation error: " + e.Message); 
    } 

    private static void ShowError(string message) 
    { 
     Console.WriteLine("ERROR: " + message); 
    } 

    private static void ShowUsage() 
    { 
     Console.WriteLine("USAGE: GaraioXmlValidator (name of XML file) (name of XSD file)" + Environment.NewLine); 
    } 

    private static void ShowTitle() 
    { 
     Console.WriteLine("GaraioXmlValidator v1.0 (c) 2008 by Garaio Technology Lab" + Environment.NewLine); 
    } 
+0

मैंने कुछ महीने पहले आपके लिए बहुत ही समान समाधान की कोशिश की है: यहां तक ​​कि यह जिम पसंद से बहुत जल्द बंद हो जाता है। –

+0

आप मुझे जेरोइन बहुत अच्छी तरह से जानते हैं। –

1

मुझे पता चला कि OxygenXML editor रूप में अच्छी तरह इस बात का एक बहुत अच्छा काम करता है की तरह काफी intricated स्कीमा के खिलाफ मान्य करने के लिए के लिए काम किया है। यह एक वाणिज्यिक संपादक है, लेकिन प्रमाणीकरण (दूसरों का उपयोग करने के विकल्प के साथ) करने के लिए Xerces engine के साथ सत्यापन किया जाता है। मैंने पहले Xerces की कोशिश की, और इसे पहली त्रुटि के बारे में रिपोर्ट करने के लिए नहीं मिला, लेकिन वे कहते हैं कि वे बल देते हैं यह रिपोर्टिंग रखने के लिए। यह वास्तव में एक अच्छा काम करता है।

XMLSpy आधिकारिक तौर पर इसका समर्थन नहीं करता है। मैंने दो संपादकों के बारे में जो देखा, उसके आधार पर, मुझे ऑक्सीजनएक्सएमएल पसंद है तो एक्सएमएलपीपी, न केवल उस सुविधा के लिए (जो वास्तव में ऐसा करता है)।

+0

oXygen एक अच्छा उपकरण है। पता नहीं कैसे हमने इसके बिना एक्सएसडी किया। इसके अलावा यह गुणवत्ता स्कीमा दस्तावेज उत्पन्न करता है। – Gerard