आप इसे सत्यापित करने के लिए किसी XML दस्तावेज़ के विरुद्ध एक XPath अभिव्यक्ति सत्यापित कर सकते हैं, लेकिन क्या उस दस्तावेज़ के लिए स्कीमा के विरुद्ध समान XPath अभिव्यक्ति को सत्यापित करने का कोई आसान तरीका है?क्या मैं एक्सएमएल स्कीमा के खिलाफ XPath अभिव्यक्ति को मान्य कर सकता हूं?
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" ... etc>
<xsd:element name="RootData">
<xsd:complexType>
<xsd:sequence minOccurs="0">
<xsd:element name="FirstChild">
<xsd:complexType>
<xsd:sequence minOccurs="0">
<xsd:element name="FirstGrandChild">
... etc etc
एक आसान या निर्मित रास्ता सत्यापित करने के लिए XPath है:
मैं इस तरह एक XSD स्कीमा है कहो
/RootData/FirstChild/FirstGrandChild
किसी भी एक्सएमएल दस्तावेजों के खिलाफ मान्य होगा कि उस स्कीमा पर आधारित हो सकता है? (संपादित: मुझे लगता है कि मेरा मतलब है संभावित वैध; वास्तविक XML दस्तावेज़ उन तत्वों को शामिल नहीं हो सकता है, लेकिन वह अभी भी XPath स्कीमा के लिए संभावित रूप से वैध माना जा सकता है जबकि, कहते हैं, /RootData/ClearlyInvalidChild/ThisElementDoesntExistEither
स्पष्ट रूप से अवैध है।।)
बेशक मैं केवल यह उम्मीद कर सकता हूं कि यह मनमाने ढंग से जटिलता के बजाय कैननिकल XPath अभिव्यक्तियों के खिलाफ काम करे, लेकिन यह ठीक है।
मैं विशेष रूप से .NET में सोच रहा हूं लेकिन अगर अन्य कार्यान्वयन इसे संभव बनाता है तो उत्सुक हूं। यह इतना महत्वपूर्ण है कि मैं अपने खुद के रोल करना चाहते हैं नहीं है, उदाहरण के लिए मैं नहीं है वास्तव में एक दूसरे की तरह में कि XPath अभिव्यक्ति को बदलने के लिए अपने खुद के कोड लिखना चाहते हैं:
/xsd:schema/xsd:element[@name='RootData']/xsd:complexType/xsd:sequence/xsd:element[@name='FirstChild']/...etc...
... हालांकि मैं जानता हूँ कि मैं कर सकता ऐसा करें अगर मुझे वास्तव में करना पड़ा।
चीयर्स!
वह XPath उदा। उस एक्सएसडी के आधार पर * किसी भी * दस्तावेज़ के खिलाफ मान्य नहीं होगा - अगर फर्स्ट चाइल्ड (या फर्स्टग्राउंड चाइल्ड) 0 गुना होता है, तो मुझे यकीन नहीं है कि आप वास्तव में क्या कर रहे हैं। शायद आप का मतलब है कि एक XPath उस स्कीमा के आधार पर * कुछ * दस्तावेज़ के खिलाफ मान्य हो सकता है। कृपया स्पष्ट करें। – 13ren
बेशक मेरा मतलब है "संभावित रूप से मान्य"। कैनोनिकल XPath का जिक्र करते हुए मैं यही कर रहा था, लेकिन यह स्पष्ट करने के लिए संपादित किया गया है कि मैं एक संभावित XML दस्तावेज़ भी मान रहा हूं। – Gavin
मुझे यकीन नहीं है कि "कैननिकल XPath एक्सप्रेशन" की एक सटीक तकनीकी परिभाषा है - मेरा अनुमान था कि आप बाधाओं के बिना सरल नाम थे। बीटीडब्ल्यू: सरल नामों के लिए, यह परिवर्तन नियमित अभिव्यक्तियों के साथ सरल है (लेकिन दुर्भाग्य से नामित प्रकारों के लिए काम नहीं करेगा, क्योंकि वे नेस्टेड नहीं हैं) – 13ren