मैं एक एपीआई के परीक्षण को स्वचालित करने के लिए काम कर रहा हूं जो एक्सएमएल लेता है और लौटाता है, इसलिए मैं जितना संभव हो सके स्कीमा में एपीआई के दस्तावेज रिटर्न डेटा का अनुवाद करना चाहता हूं। मैंने उपयोग और सीखने में आसानी के आधार पर इस कार्य के लिए RelaxNG चुना है।क्या एक ही नाम वाले तत्वों के एक अनियमित सेट को निर्दिष्ट कर सकते हैं, लेकिन अलग-अलग विशेषताएं?
इससे पहले कि मैं सभी जानकारी में फेंक, यहाँ सवाल है:
यह वर्णन करने के लिए "तत्वों की अव्यवस्थित सेट, एक ही नाम है, लेकिन अलग-अलग विशेषताओं के साथ" संभव है?
<item>
<id>d395136e-d060-4a6e-887c-c0337dd7ad09</id>
<name>The item has a name</name>
<link rel="self" type="type1" href="url" />
<link rel="download" type="type2" href="url" />
<link rel="relatedData" type="type3" href="url" />
</item>
लिंक वस्तुओं बिट है कि मैं काट दिया हो रही हैं:
यहाँ मैं मुसीबत का वर्णन हो रही है के लिए एक नमूना वस्तु है। यहां समस्या है:
- आइटम के अंदर तत्वों के क्रम की गारंटी नहीं है, इसलिए मैं सभी तत्वों को
<interleave>
संरचना में रखने की कोशिश कर रहा हूं। <item>
के अंदर<item>
के अंदर कई<item>
के अंदर तत्व होंगे (यानी<item>
में 'स्वयं' लिंक, एक 'डाउनलोड' लिंक होना चाहिए, और एक 'संबंधित डेटा' लिंक मान्य होना चाहिए)।- प्रत्येक लिंक प्रकार में से एक की आवश्यकता है, लेकिन फिर आदेश की गारंटी नहीं है।
<element name="item"> <interleave> <element name="id"><text/></element> <element name="name"><text/></element> <ref name="selfLink"/> <ref name="launchLink"/> <ref name="thumbnailLink"/> </interleave> </element>
'क्लिक' संदर्भ इसलिए की तरह कहीं और परिभाषित कर रहे हैं: - जिंग से
<define name="selfLink"> <element name="link"> <attribute name="href"><text/></attribute> <attribute name="rel"><value>self</value></attribute> <attribute name="type"><value>type1</value></attribute> </element> </define>
पार्सर इस बारे में खुश नहीं है
मैं तो जैसे स्कीमा का वर्णन करने की कोशिश की मुझे error: the element "link" can occur in more than one operand of "interleave"
मिल गया है। मैं देख सकता हूं कि यह क्या हो रहा है लेकिन मुझे आशा है कि यह अद्वितीय वस्तुओं के रूप में 'समान नाम वाले तत्वों लेकिन अलग-अलग विशेषताओं' के विचार को संभाल सके।
इंटरलीव से लिंक रिफ्रेंस को स्थानांतरित करना इसे पार्स करने के लिए मिलता है, लेकिन जब भी लौटाए गए डेटा में ऑर्डर बदलता है तो मैं सत्यापनकर्ता को उड़ने का इंतजार करूँगा।
कोई विचार, या यह असंभव है? क्या एक्सएमएल के साथ कोई अंतर्निहित मुद्दा है जो मैं प्रसंस्करण कर रहा हूं जिसके लिए मुझे अपने परीक्षण अनुप्रयोग में उच्च प्रसंस्करण तर्क में कुछ स्थानांतरित करने की आवश्यकता होगी (अधिक सामान्य XML सत्यापन चलाने के बाद मैन्युअल रूप से प्रत्येक लिंक प्रकार की जांच करें?)
जब आप कहते हैं कि "अलग-अलग विशेषताओं", आप वास्तव में क्या मतलब है "अलग विशेषता मान":
यहाँ एक टुकड़ा है कि स्कीमेट्रोन कि है supported by Jing के संस्करण का उपयोग कर अपने
<link>
तत्वों की जांच करता है? – mzjnदरअसल, हां, स्पष्टीकरण के लिए धन्यवाद। विभिन्न मूल्य आवश्यकताओं के साथ विशेषताओं का एक ही सेट। – James