लंबी कहानी छोटी: मैं जानना चाहता हूं कि एक्सएसडी से कुंजी/कीफ्रफ़ का उपयोग कैसे करें ताकि तत्वों को एक-दूसरे के संदर्भ मिल सकें। एक साधारण xsd और एक एक्सएमएल का उपयोग करके, इसका एक उदाहरण होना चाहिए।एक्सएमएल स्कीमा कुंजी/कीफ्रैफ़ - उनका उपयोग कैसे करें?
लंबी कहानी: मैं आईडी/आईडीआरईएफ के उपयोग से परिचित हूं। मैं उन लोगों का उपयोग जेएक्सबी के लिए तत्वों को जोड़ने के लिए करता हूं। मुझे बार-बार कहा गया है कि एक्सएसडी में कुंजी/कीफ्रैफ़ निर्माण इंटर-एलिमेंट रेफरेंसिंग के लिए लचीलापन प्रदान करता है। मैंने OReilly XML Schema book से परामर्श लिया है, जो कि कुंजी/कीफ्रफ़ की सही परिभाषा और आईडी/आईडीआरईएफ (लेकिन बेहतर) के समान कैसे है और इसके उपयोग का एक सरल उदाहरण नहीं देता है। यह समान नहीं लगता है, क्योंकि आप आईडी को एक तत्व में एक विशेषता के रूप में परिभाषित करते हैं और आईडीआरएफ को किसी अन्य तत्व और voila में परिभाषित करते हैं। लेकिन कुंजी/संदर्भित की एक आम पूर्वज और संदर्भित तत्व (AFAIK) में परिभाषित किया जाना है keyref ...
मैं XSD फ़ाइलों का उपयोग XJC साथ JAXB बाध्य जावा वर्गों उत्पन्न करने के लिए
मैं खोज की है कैसे करें, ट्यूटोरियल और उदाहरण के लिए, लेकिन गूगल मुझे स्क्रैप्स देता है। एसओ पर खोज के लिए भी (Google के साथ और '+' के साथ समावेशी खोज के साथ भी)।
हर किसी के जीवन को आसान बनाने के लिए मैंने पहले से परिभाषित कुंजी/कीफ्रफ़ जोड़ी के साथ एक एक्सएसडी तैयार किया है जैसा कि मैंने इसे समझा है।
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="referenced">
<xs:complexType>
<xs:attribute name="id" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="owner">
<xs:complexType>
<xs:attribute name="id" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:key name="aKey">
<xs:selector xpath="owner" />
<xs:field xpath="@id" />
</xs:key>
<xs:keyref name="aKeyRef" refer="aKey">
<xs:selector xpath="referenced" />
<xs:field xpath="@id" />
</xs:keyref>
</xs:element>
कैसे एक्सएमएल का एक टुकड़ा एक 'owner' तत्व एक संदर्भित' referenced'-तत्व के साथ की तरह, विचार करेंगे?
संपादित करें: ने टॉम डब्ल्यू द्वारा प्रस्तावित परिवर्तन को लागू किया, मुख्य तत्व के xpath विशेषता को "स्वामी" में बदल दिया। जेएक्सबी (एक्सजेसी) अभी भी परवाह नहीं करता है।
धन्यवाद
आह, यही कारण है कि इसमें कोई विशेषता शामिल नहीं है। मैंने आपके द्वारा बताए गए परिवर्तन को लागू किया है, लेकिन JAXB मालिक से संदर्भित तत्व तक पहुंचने में सक्षम होने के लिए कुछ भी उत्पन्न नहीं करता है - पूरे कुंजी/कीफ्रफ़ भाग का मानचित्रण पर कोई प्रभाव नहीं पड़ता है। क्या वहां कुछ और है जो मुझे याद आ रही है? – kostja
मेरा कहना था कि एक्सजेसी उत्पन्न नहीं करता है ... – kostja
शायद मुझे उपरोक्त पोस्ट में जो कह रहा है उसे स्पष्ट करना चाहिए। मुझे नहीं पता कि जेएक्सबी क्या है, लेकिन इससे कोई फर्क नहीं पड़ता - मैं जो कहने की कोशिश कर रहा हूं वह यह है कि <मालिक अन्य इटैम = "1" /> ... <अन्य इटिम आईडी = "1" />। क्या आपको मुख्य संबंध व्यक्त करने की आवश्यकता है, उदाहरण के लिए विशेष रूप से एक महत्वपूर्ण संबंध घोषित करने के लिए कोई XML सिंटैक्स नहीं है। मुझे लगता है कि आपका मतलब यह है कि आप एक फ्रेमवर्क का उपयोग कर रहे हैं जिसे एक्सएमएल फाइलों के लिए ओआरएम के रूप में कार्य करना है, इस मामले में आप कुछ सार्थक आउटपुट की उम्मीद कर सकते हैं, इस मामले में, कुंजी और कीफ के दायरे के साथ खेलने का प्रयास करें उन्हें चारों ओर ले जा रहा है। –