XQuery API for Java
जावा के लिए XQuery API (XQJ) W3C XQuery 1.0 विनिर्देश के लिए सामान्य जावा API को संदर्भित करता है। एक्सक्यूजे एपीआई जावा प्रोग्रामरों को एक्सएमएल डेटा स्रोत के खिलाफ एक्सक्वेरी निष्पादित करने में सक्षम बनाता है (जैसे। एक एक्स. एम. एल. डाटाबेस) विक्रेता लॉक इन को कम या समाप्त करते समय। XQJ API जावा डेवलपर्स को XQuery डेटा मॉडल के लिए एक इंटरफेस प्रदान करता है। इसका डिज़ाइन जे. डी. बी. सी. ए. पी. आई. के समान है जिसमें क्लाइंट/सर्वर का अनुभव होता है और इस तरह सर्वर-आधारित एक्स. एम. एल. डेटाबेस को अच्छी तरह से उधार देता है और क्लाइंट-साइड एक्सक्वेरी प्रोसेसर को कम अच्छी तरह से उधार देता है, हालांकि "कनेक्शन" भाग पूरे ए. पी. आई. का एक बहुत ही छोटा हिस्सा है। XQJ API के उपयोगकर्ता कोड इंजेक्शन हमलों को रोकते हुए जावा मूल्यों को XQuery अभिव्यक्तियों से जोड़ सकते हैं। इसके अलावा, कई एक्सक्वेरी अभिव्यक्तियों को परमाणु लेनदेन के हिस्से के रूप में निष्पादित किया जा सकता है। इतिहास और कार्यान्वयन जावा के लिए XQuery API को जावा सामुदायिक प्रक्रिया में JSR 225 के रूप में विकसित किया गया था। इसके पास ओरेकल, आईबीएम, बीईए सिस्टम्स, सॉफ्टवेयर एजी, इंटेल, नोकिया और डेटाडायरेक्ट जैसे कुछ बड़े प्रौद्योगिकी समर्थक थे। जावा विनिर्देशन के लिए XQuery API का संस्करण 1 जून, 2009 को जावा डॉक्स, एक संदर्भ कार्यान्वयन और एक TCK (प्रौद्योगिकी संगतता किट) के साथ जारी किया गया था, जिसे लागू करने वाले विक्रेताओं को इसके अनुरूप होना चाहिए। XQJ वर्ग जावा पैकेज javax.xml.xquery में निहित हैं XQJ का एक संस्करण बनाने के लिए कोई (दृश्यमान) गतिविधि नहीं है जो XQuery 3 या 3 के लिए समर्थन प्रदान करता है, उदाहरण के लिए कार्य, सरणी या मानचित्र जैसे डेटा मॉडल में परिवर्धन के लिए जावा बाइंडिंग प्रदान करके। कार्यात्मकता एक्सक्यूजे कई कार्यान्वयनों को मौजूद रखने और एक ही अनुप्रयोग द्वारा उपयोग करने की अनुमति देता है। XQJ कनेक्शन XQuery अभिव्यक्तियों को बनाने और निष्पादित करने का समर्थन करते हैं। अभिव्यक्तियाँ अद्यतन हो सकती हैं और इसमें पूर्ण पाठ खोज शामिल हो सकती हैं। एक्सक्यूजे निम्नलिखित वर्गों में से एक का उपयोग करके एक्सक्वायरी अभिव्यक्तियों का प्रतिनिधित्व करता हैः एक्सक्यूएक्सप्रेशन-अभिव्यक्ति हर बार एक्सक्वायरी प्रोसेसर को भेजी जाती है। एक्सक्यूप्रेपर्ड एक्सप्रेशन-अभिव्यक्ति को कैश किया जाता है और निष्पादन पथ पूर्व निर्धारित किया जाता है जिससे इसे कुशल तरीके से कई बार निष्पादित किया जा सकता है। XQuery एक्सप्रेशन एक्स. डी. एम. आइटमों का एक परिणाम अनुक्रम प्रदान करते हैं जो एक्स. क्यू. जे. में एक्स. क्यू. आर. रिजल्टसीक्वेंस इंटरफेस के माध्यम से दर्शाए जाते हैं। प्रोग्रामर परिणाम अनुक्रम में अलग-अलग एक्स. डी. एम. वस्तुओं पर चलने के लिए एक एक्स. क्यू. रिजल्टसीक्वेंस का उपयोग कर सकता है। अनुक्रम में प्रत्येक वस्तु में उससे जुड़ी एक्स. डी. एम. प्रकार की जानकारी होती है, जैसे कि इसका नोड प्रकार। , या एक एक्स. डी. एम. परमाणु प्रकार जैसे, या। एक्सक्यूजे में एक्सडीएम प्रकार की जानकारी को एक्सक्यूआइटेमटाइप इंटरफेस के माध्यम से पुनर्प्राप्त किया जा सकता है। परमाणु एक्सक्वेरी वस्तुओं को आसानी से एक्सक्यूआइटेम एक्सेसर विधियों जैसे कि गेटबाइट () और गेटफ्लोट () के माध्यम से जावा प्रिमिटिव्स में डाला जा सकता है। इसके अलावा XQuery वस्तुओं और अनुक्रमों को डी. ओ. एम., एस. ए. एक्स., एस. टी. ए. एक्स. और सामान्य आई. ओ. और वर्गों में क्रमबद्ध किया जा सकता है। निम्नलिखित उदाहरण एक एक्स. एम. एल. डेटाबेस के लिए एक कनेक्शन बनाने, एक एक्सक्वेरी अभिव्यक्ति जमा करने, फिर जावा में परिणामों को संसाधित करने को दर्शाता है। एक बार जब सभी परिणामों को संसाधित कर लिया जाता है, तो इससे जुड़े सभी संसाधनों को मुक्त करने के लिए कनेक्शन बंद कर दिया जाता है। //एक एक्स. एम. एल. डाटाबेस एक्स. क्यू. कनेक्शन कन = vendorDataSource.getConnection ("माययूजर", "मायपासवर्ड") के लिए एक नया कनेक्शन बनाएँ; एक्स. क्यू. एक्सप्रेशन एक्स. पी. आर. = conn.createExpression ();// एक पुनः प्रयोज्य एक्स. क्यूरी एक्सप्रेशन ऑब्जेक्ट एक्स. क्यू. आर. रिजल्टसीक्वेंस परिणाम = expr.executeQuery बनाएँ ("एफ. एन. में $एन. के लिएः संग्रह ('कैटलॉग')// आइटम" + "रिटर्न एफ. एन.: डेटा ($एन/नाम)");// एक एक्स. क्यूरी एक्सप्रेशन को निष्पादित करें// परिणाम अनुक्रम को बार-बार प्रोसेस करें जबकि (result.next ()) {// अनुक्रम में वर्तमान आइटम को प्रिंट करें <आई. डी. 5 मान लीजिए कि कनेक्शन पहले से मौजूद हैः XQExpress expr = conn.createExpression ();// निष्पादित की जाने वाली XQuery अभिव्यक्ति स्ट्रिंग Es = "चर $x को xs के रूप में घोषित करेंः पूर्णांक बाहरी;" + "fn में $n के लिएः संग्रह ('कैटलॉग')// आइटम" + "जहां $n/मूल्य <= $x" + "रिटर्न fn: डेटा ($n/नाम)";// QName x expr.bindInt (नया QName ("x"), 21, शून्य) के साथ एक बाहरी चर के लिए एक मान (21) को बांधें;// XQuery अभिव्यक्ति XQRessequance परिणाम निष्पादित करें। ये मानचित्रण नियम जे. ए. एक्स. बी. में पाए जाने वाले मानचित्रण नियमों के साथ बहुत समानता रखते हैं। निम्नलिखित तालिका XQuery अभिव्यक्तियों में बाहरी चर के लिए जावा मूल्यों को बांधते समय डिफ़ॉल्ट मानचित्रण नियमों को दर्शाती है। ज्ञात कार्यान्वयन नेटिव एक्स. एम. एल. डेटाबेस निम्नलिखित नेटिव एक्स. एम. एल. डेटाबेस की एक सूची है जो जावा कार्यान्वयन के लिए एक्सक्वेरी एपीआई के लिए जाने जाते हैं। मार्कलॉजिक एक्सिस्ट बेसएक्स सेडना ओरेकल एक्सडीबी टैमिनो टाइगरलॉजिक रिलेशनल डेटाबेस डेटाडायरेक्ट रिलेशनल डेटाबेस के लिए एक्सक्यूजे एडाप्टर प्रदान करता है, एक्सक्वायरी कोड को एसक्यूएल में अनुवाद करके, फिर एसक्यूएल परिणाम सेट को एक्सक्यूजे के लिए उपयुक्त प्रारूप में परिवर्तित करके आगे की प्रक्रिया के लिए। निम्नलिखित कुछ ज्ञात कार्यान्वयन हैं। ओरेकल डी. बी. (एक्स. डी. बी. नहीं) आई. बी. एम. डी. बी. 2 माइक्रोसॉफ्ट एस. क्यू. एल. सर्वर साइबेस ए. एस. ई. इन्फॉर्मिक्स माई. एस. क्यू. एल. पोस्टग्रे. एस. क्यू. एल. गैर-डेटाबेस कार्यान्वयन निम्नलिखित गैर-डेटाबेस एक्स. क्वेरी प्रोसेसरों की एक सूची है जो जावा इंटरफेस के लिए एक एक्स. क्वेरी ए. पी. आई. प्रदान करते हैं (आमतौर पर फ़ाइलस्टोर में एक्स. एम. एल. से पार्स किए गए दस्तावेजों के खिलाफ क्वेरी की अनुमति देते हैं, और डी. ओ. एम. या इसी तरह के ट्री के रूप में मेमोरी में रखे जाते हैं)। सैक्सन एक्सएसएलटी और एक्सक्वेरी प्रोसेसर ज़ोरबा एमएक्सक्वेरी ओरेकल एक्सक्वेरी प्रोसेसर लाइसेंस विनिर्देशन को "कॉपीराइट © 2003,2006-2009 ओरेकल" के रूप में चिह्नित किया गया है। सभी अधिकार सुरक्षित हैं। विनिर्देशन में दो अलग-अलग लाइसेंस होते हैंः एक "विनिर्देशन लाइसेंस" और एक "संदर्भ कार्यान्वयन लाइसेंस"। विनिर्देशन अनुज्ञप्ति विनिर्देशन की निःशुल्क प्रतिलिपि बनाने की अनुमति देता है बशर्ते कि प्रतिलिप्याधिकार सूचनाएँ बरकरार रखी जाएं; यह विनिर्देशन के कार्यान्वयन को बनाने और वितरित करने के लिए एक अनुज्ञप्ति भी प्रदान करता है बशर्ते कि यह पूरे विनिर्देशन को पूरी तरह से लागू करता है, कि यह किसी भी इंटरफेस को संशोधित या विस्तारित नहीं करता है, और यह कि यह संगतता परीक्षणों को पारित करता है। इस प्रावधान ने कुछ विवाद पैदा किया है। सबसे पहले, यह सार्वभौमिक रूप से स्वीकार नहीं किया जाता है कि एक प्रकाशित विनिर्देश को लागू करना एक ऐसी चीज है जिसके लिए एक लाइसेंस की आवश्यकता होती है (यानी, कि कॉपीराइट कानून लाइसेंस के अभाव में इसकी अनुमति नहीं देगा)। दूसरा, विस्तार और संशोधन करने पर प्रतिबंध के कारण लाइसेंस एक ओपन सोर्स लाइसेंस के रूप में अर्हता प्राप्त करने के मानदंडों को पूरा नहीं करता है (ओपन सोर्स परिभाषा देखें)। इसने कुछ मुक्त स्रोत उत्साही लोगों को यह चुनौती देने के लिए प्रेरित किया है कि क्या XQJ कार्यान्वयन को कभी भी वास्तव में मुक्त स्रोत माना जा सकता है। संदर्भ कार्यान्वयन के लिए लाइसेंस काफी पारंपरिक बीएसडी-शैली का खुला स्रोत लाइसेंस है। संदर्भ बाहरी लिंक जावादोक XQJ XQJ ट्यूटोरियल बिल्डिंग ब्रिज जावा से XQuery, चार्ल्स फोस्टर के लिए। XML प्राग 2012 (प्रेज़ी प्रस्तुति) XQuery, हंस-जुर्गेन रेनाऊ का जावा एकीकरण। XQJ स्प्रिंग इंटीग्रेशन XQuery सपोर्ट XQS: XQuery फॉर स्केला (XQJ के शीर्ष पर बैठता है) इंटेलीजे XQuery सपोर्ट प्लगइन जावा APIs जावा विनिर्देश XML डेटा एक्सेस XML डेटाबेस API के लिए जावा API का अनुरोध करता है