का उपयोग कर एक वैध एक्सएसडी बनाना खुला है, मुझे XML दस्तावेज़ों को सत्यापित करने के लिए एक एक्सएसडी निर्दिष्ट करने की आवश्यकता है। एक्सएसडी का प्रयोग जावा बाइंडिंग की जेएक्सबी पीढ़ी के लिए किया जाएगा। मेरी समस्या वैकल्पिक तत्वों को निर्दिष्ट कर रही है जिन्हें मैं नाम नहीं जानता और जिन्हें मैं आम तौर पर पार्सिंग में रूचि नहीं रखता हूं।<all> और <any> तत्व
एक्सएमएल दस्तावेजों की संरचना की तरह है:
<TRADE>
<TIME>12:12</TIME>
<MJELLO>12345</MJELLO>
<OPTIONAL>12:12</OPTIONAL>
<DATE>25-10-2011</DATE>
<HELLO>hello should be ignored</HELLO>
</TRADE>
महत्वपूर्ण बात यह है, कि:
- मैं किसी भी क्रम कल्पना नहीं कर सकते हैं, और अगले XML दस्तावेज़ उदाहरण migtht टैग नहीं है एक अलग क्रम में
- मुझे केवल कुछ टैगों को पार्स करने में दिलचस्पी है, कुछ अनिवार्य हैं और कुछ वैकल्पिक हैं
- एक्सएमएल डॉक्यूमे एनटीएस नए तत्व जो मैं पार्स करने
में दिलचस्पी नहीं है के साथ बढ़ाया जा सकता है मेरी XSD की संरचना की तरह (एक मान्य XSD) है:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- *********************************************** -->
<!-- Trade element definitions for the XML Documents -->
<!-- *********************************************** -->
<xs:complexType name="Trade">
<!-- Using the all construction ensures that the order does not matter -->
<xs:all>
<xs:element name="DATE" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="TIME" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="OPTIONAL" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:any minOccurs="0"/>
</xs:all>
</xs:complexType>
<!-- TRADE is the mandatory top-level tag -->
<xs:element name="TRADE" type="Trade"/>
</xs:schema>
तो, इस उदाहरण में : DATE और TIME अनिवार्य हैं (वे एक बार एक्सएमएल में एक बार होना चाहिए), वैकल्पिक एक बार उपस्थित हो सकता है और फिर मैं निर्दिष्ट करना चाहता हूं कि अन्य सभी टैग की अनुमति है। आदेश कोई फर्क नहीं पड़ता।
मैं इसके लिए एक वैध एक्सएसडी कैसे निर्दिष्ट करूं?
मैं एक suspecion है कि इस मामले :-(अतिरिक्त बात मैं नहीं लिखा था था मुझे पता है कि है कि तत्वों अधिकतम एक बार दिखाई देगा, –
मैंने पार्सिंग चरण से पहले एक एक्सएसएलटी कदम उठाया। यह पूरी तरह से काम करता है, पहले उन सभी टैग को फ़िल्टर करना जिनमें मुझे रूचि नहीं है, और उसके बाद केवल "स्लिम" xsd के अनुसार मान्य करना शामिल है जिसमें मुझे रूचि है। –
क्या अगर मुझे पता है कि 'जो कुछ भी' तारीख 'या' समय 'नहीं होगा? तो कोई अस्पष्टता नहीं होगी। –