XQuery API for Java
জাভার জন্য এক্সকুয়েরি এপিআই (এক্সকিউজে) ডাব্লু3সি এক্সকুয়েরি 1.0 স্পেসিফিকেশনের জন্য সাধারণ জাভা এপিআইকে বোঝায়। এক্সকিউজে এপিআই জাভা প্রোগ্রামারদের একটি এক্সএমএল ডেটা উৎসের বিরুদ্ধে এক্সকুয়েরি চালাতে সক্ষম করে (যেমন। একটি এক্স. এম. এল ডাটাবেস) বিক্রেতার লক-ইন হ্রাস বা অপসারণ করার সময়। এক্সকিউজে এপিআই জাভা ডেভেলপারদের এক্সকুয়েরি ডেটা মডেলের একটি ইন্টারফেস প্রদান করে। এর নকশা জে. ডি. বি. সি. এ. পি. আই-এর অনুরূপ যার একটি ক্লায়েন্ট/সার্ভার অনুভূতি রয়েছে এবং যেমন সার্ভার-ভিত্তিক এক্স. এম. এল ডাটাবেসের জন্য ভাল এবং ক্লায়েন্ট-সাইড এক্সকুয়েরি প্রসেসরের জন্য কম ভাল, যদিও "সংযোগ" অংশটি পুরো এ. পি. আই-এর একটি খুব ছোট অংশ। এক্সকিউজে এপিআই-এর ব্যবহারকারীরা জাভা মানগুলিকে এক্সকুয়েরি এক্সপ্রেশনগুলির সাথে আবদ্ধ করতে পারেন, যা কোড ইনজেকশন আক্রমণ প্রতিরোধ করে। এছাড়াও, পারমাণবিক লেনদেনের অংশ হিসাবে একাধিক এক্সকুয়েরি এক্সপ্রেশন কার্যকর করা যেতে পারে। ইতিহাস এবং বাস্তবায়ন জাভার জন্য এক্সকুয়েরি এপিআই জাভা কমিউনিটি প্রসেসে জেএসআর 225 হিসাবে তৈরি করা হয়েছিল। এর কিছু বড় প্রযুক্তি সমর্থক ছিল যেমন ওরাকল, আইবিএম, বিইএ সিস্টেমস, সফ্টওয়্যার এজি, ইন্টেল, নোকিয়া এবং ডেটাডাইরেক্ট। জাভা স্পেসিফিকেশনের জন্য এক্সকুয়েরি এপিআই-এর সংস্করণ 1 জাভাডকস, একটি রেফারেন্স বাস্তবায়ন এবং একটি টিসিকে (প্রযুক্তি সামঞ্জস্য কিট) সহ 24শে জুন, 2009-এ প্রকাশিত হয়েছিল, যা বাস্তবায়নকারী বিক্রেতাদের অবশ্যই মেনে চলতে হবে। এক্সকিউজে ক্লাসগুলি জাভা প্যাকেজ javax.xml.xquery-এ রয়েছে, এক্সকিউজে-এর এমন কোনও সংস্করণ তৈরি করার জন্য কোনও (দৃশ্যমান) ক্রিয়াকলাপ নেই যা এক্সকিউয়েরি 3.0 বা 3.1-এর জন্য সমর্থন প্রদান করে, উদাহরণস্বরূপ ফাংশন, অ্যারে বা মানচিত্রের মতো ডেটা মডেলে সংযোজন করার জন্য জাভা বাইন্ডিং প্রদান করে। কার্যকারিতা এক্সকিউজে একাধিক বাস্তবায়নের অস্তিত্ব এবং একই অ্যাপ্লিকেশন দ্বারা ব্যবহার করার অনুমতি দেয়। এক্সকিউজে সংযোগগুলি এক্সকুয়েরি এক্সপ্রেশন তৈরি এবং কার্যকর করতে সহায়তা করে। অভিব্যক্তিগুলি আপডেট হতে পারে এবং সম্পূর্ণ পাঠ্য অনুসন্ধান অন্তর্ভুক্ত থাকতে পারে। এক্সকিউজে নিম্নলিখিত ক্লাসগুলির মধ্যে একটি ব্যবহার করে এক্সকুয়েরি এক্সপ্রেশনগুলি উপস্থাপন করেঃ এক্সকিউএক্সপ্রেশন-এক্সপ্রেশনটি প্রতিবার এক্সকুয়েরি প্রসেসরে পাঠানো হয়। এক্সকিউপ্রিপেয়ার্ড এক্সপ্রেশন-অভিব্যক্তিটি ক্যাশে করা হয় এবং কার্যকর করার পথটি পূর্বনির্ধারিত হয় যা এটিকে দক্ষ পদ্ধতিতে একাধিকবার কার্যকর করার অনুমতি দেয়। এক্সকুয়েরি এক্সপ্রেশনগুলি এক্সডিএম আইটেমগুলির একটি ফলাফল ক্রম প্রদান করে যা এক্সকিউজে-তে এক্সকিউআরসাল্টসিকুয়েন্স ইন্টারফেসের মাধ্যমে প্রতিনিধিত্ব করা হয়। প্রোগ্রামার একটি এক্সকিউআরসাল্টসিকোয়েন্স ব্যবহার করে ফলাফলের ক্রমে পৃথক এক্সডিএম আইটেমের উপর দিয়ে যেতে পারেন। ক্রমের প্রতিটি আইটেমে এর সাথে যুক্ত এক্সডিএম ধরনের তথ্য রয়েছে, যেমন এর নোডের ধরন। , অথবা একটি এক্স. ডি. এম পারমাণবিক প্রকার যেমন, বা। এক্সকিউজে-তে এক্সডিএম ধরনের তথ্য এক্সকিউআইটেমটাইপ ইন্টারফেসের মাধ্যমে পুনরুদ্ধার করা যেতে পারে। অ্যাটমিক এক্সকুয়েরি আইটেমগুলি সহজেই জাভা প্রিমিটিভগুলিতে এক্সকিউআইটেম অ্যাক্সেসর পদ্ধতির মাধ্যমে কাস্ট করা যেতে পারে যেমন গেটবাইট () এবং গেটফ্লোট ()। এছাড়াও এক্সকুয়েরি আইটেম এবং ক্রমগুলি ডি. ও. এম, এস. এ. এক্স, এস. টি. এ. এক্স এবং জেনেরিক আই. ও এবং শ্রেণীগুলিতে ক্রমিক করা যেতে পারে। উদাহরণ মৌলিক নিম্নলিখিত উদাহরণটি একটি এক্সএমএল ডেটাবেসের সাথে একটি সংযোগ তৈরি করে, একটি এক্সকুয়েরি এক্সপ্রেশন জমা দেয়, তারপর জাভাতে ফলাফলগুলি প্রক্রিয়াকরণ করে। একবার সমস্ত ফলাফল প্রক্রিয়া করা হয়ে গেলে, এর সাথে সম্পর্কিত সমস্ত সংস্থান মুক্ত করার জন্য সংযোগটি বন্ধ করে দেওয়া হয়। //একটি এক্সএমএল ডাটাবেস এক্সকিউ কানেকশন কন = vendorDataSource.getConnection ("মাইইউজার", "মাইপাসওয়ার্ড")-এ একটি নতুন সংযোগ তৈরি করুন; এক্সকিউএক্সপ্রেশন এক্সপ্রেস = conn.createExpression ();// একটি পুনঃব্যবহারযোগ্য এক্সকিউয়েরি এক্সপ্রেশন অবজেক্ট এক্সকিউআরসাল্টসিকোয়েন্স ফলাফল = expr.executeQuery তৈরি করুন ("এফএন-এ $এন-এর জন্যঃ সংগ্রহ ('ক্যাটালগ')// আইটেম" + "রিটার্ন এফএনঃ ডেটা ($এন/নাম)");// একটি এক্সকিউয়েরি এক্সপ্রেশন কার্যকর করুন// ফলাফলের ক্রমটি পুনরাবৃত্তভাবে প্রক্রিয়া করুন যখন (result.next ()) ধরে নিন যে সংযোগটি ইতিমধ্যেই বিদ্যমান রয়েছেঃ এক্সকিউএক্সপ্রেশন এক্সপ্রেশন এক্সপ্রেশন = conn.createExpression ();// এক্সকুয়েরি এক্সপ্রেশনটি কার্যকর করা হবে স্ট্রিং এস = "পরিবর্তনশীল $x কে এক্সএস হিসাবে ঘোষণা করুনঃ বাহ্যিক পূর্ণসংখ্যা;" + "এফএন-এ $এন-এর জন্যঃ সংগ্রহ ('ক্যাটালগ')// আইটেম" + "যেখানে $এন/মূল্য <= $এক্স" + "রিটার্ন এফএনঃ ডেটা ($এন/নাম)";// কিউএনম এক্স expr.bindInt (নতুন কিউএনম ("এক্স"), 21, নাল)-এর সাথে একটি বাহ্যিক পরিবর্তনশীলের সাথে একটি মান (21) বাঁধুন;// এক্সকুয়েরি এক্সপ্রেশন এক্সকিউআর ফলাফল সম্পাদন করুন এই ম্যাপিং নিয়মগুলি জেএএক্সবি-তে পাওয়া ম্যাপিং নিয়মগুলির সাথে প্রচুর মিল রয়েছে। নিম্নলিখিত টেবিলটি এক্সকুয়েরি এক্সপ্রেশনগুলিতে বাহ্যিক ভেরিয়েবলের সাথে জাভা মানগুলিকে আবদ্ধ করার জন্য ডিফল্ট ম্যাপিং নিয়মগুলি চিত্রিত করে। পরিচিত বাস্তবায়ন নেটিভ এক্স. এম. এল ডাটাবেস নিম্নলিখিত নেটিভ এক্স. এম. এল ডেটাবেসের একটি তালিকা যা জাভা বাস্তবায়নের জন্য এক্সকুয়েরি এপিআই রয়েছে বলে জানা যায়। মার্কলজিক এক্সিস্ট বেসএক্স সেদনা ওরাকল এক্সডিবি তামিনো টাইগারলজিক রিলেশনাল ডেটাবেস ডেটাডাইরেক্ট রিলেশনাল ডেটাবেসের জন্য এক্সকিউজে অ্যাডাপ্টার সরবরাহ করে, এক্সকিউয়েরি কোডকে এসকিউএল-এ অনুবাদ করে, তারপরে এসকিউএল ফলাফল সেটগুলিকে এক্সকিউজে-এর জন্য আরও প্রক্রিয়া করার জন্য উপযুক্ত বিন্যাসে রূপান্তর করে। নিম্নলিখিত কয়েকটি পরিচিত বাস্তবায়ন। ওরাকল ডিবি (এক্সডিবি নয়) আইবিএম ডিবি2 মাইক্রোসফট এসকিউএল সার্ভার সাইবেস এএসই ইনফরমিক্স মাইএসকিউএল পোস্টগ্রেএসকিউএল নন-ডেটাবেজ বাস্তবায়নের তালিকা নিম্নরূপ যা জাভা ইন্টারফেসের জন্য একটি এক্সকুয়েরি এপিআই প্রদান করে (সাধারণত ফাইলস্টোরে এক্সএমএল থেকে পার্স করা নথির বিরুদ্ধে অনুসন্ধানের অনুমতি দেয় এবং ডিওএম বা অনুরূপ ট্রি হিসাবে মেমরিতে রাখা হয়)। স্যাক্সন এক্সএসএলটি এবং এক্সকুয়েরি প্রসেসর জোরবা এমএক্সকুয়েরি ওরাকল এক্সকুয়েরি প্রসেসর লাইসেন্স নির্দিষ্টকরণটি "কপিরাইট ® 2003,2006-2009 ওরাকল" হিসাবে চিহ্নিত করা হয়েছে। সমস্ত অধিকার সংরক্ষিত। " নির্দিষ্টকরণে দুটি পৃথক লাইসেন্স রয়েছেঃ একটি "নির্দিষ্টকরণ লাইসেন্স" এবং একটি "রেফারেন্স বাস্তবায়ন লাইসেন্স"। নির্দিষ্টকরণ লাইসেন্স নির্দিষ্টকরণের বিনামূল্যে অনুলিপি করার অনুমতি দেয় যদি কপিরাইট বিজ্ঞপ্তিগুলি ধরে রাখা হয়; এটি নির্দিষ্টকরণের একটি বাস্তবায়ন তৈরি এবং বিতরণ করার জন্য একটি লাইসেন্সও প্রদান করে তবে শর্ত থাকে যে এটি পুরো নির্দিষ্টকরণটি সম্পূর্ণরূপে প্রয়োগ করে, এটি কোনও ইন্টারফেস সংশোধন বা প্রসারিত করে না এবং এটি সামঞ্জস্যতা পরীক্ষায় উত্তীর্ণ হয়। এই বিধানটি কিছু বিতর্কের সৃষ্টি করেছে। প্রথমত, এটি সর্বজনীনভাবে স্বীকৃত নয় যে একটি প্রকাশিত নির্দিষ্টকরণ বাস্তবায়ন করার জন্য একটি লাইসেন্সের প্রয়োজন হয় (অর্থাৎ, কপিরাইট আইন একটি লাইসেন্সের অনুপস্থিতিতে এটি অনুমোদন করবে না)। দ্বিতীয়ত, এক্সটেনশন এবং পরিবর্তন করার নিষেধাজ্ঞার কারণে লাইসেন্সটি ওপেন সোর্স লাইসেন্স হিসাবে যোগ্যতা অর্জনের মানদণ্ড পূরণ করে না (ওপেন সোর্স সংজ্ঞা দেখুন)। এটি কিছু মুক্ত উৎস উত্সাহীদের চ্যালেঞ্জ করতে পরিচালিত করেছে যে এক্সকিউজে বাস্তবায়নকে কখনও সত্যিকারের মুক্ত উৎস হিসাবে বিবেচনা করা যেতে পারে কিনা। রেফারেন্স বাস্তবায়নের জন্য লাইসেন্সটি মোটামুটি প্রচলিত বিএসডি-স্টাইলের ওপেন সোর্স লাইসেন্স। জাভা থেকে এক্সকুয়েরি, চার্লস ফস্টার পর্যন্ত এক্সকিউজে এক্সকিউজে টিউটোরিয়াল বিল্ডিং ব্রিজের জন্য বাহ্যিক লিঙ্ক জাভাডক। এক্সএমএল প্রাগ 2012 (প্রিজি উপস্থাপনা) এক্সকুয়েরির জাভা ইন্টিগ্রেশন, হান্স-জার্গেন রেনাউ। এক্সকিউজে স্প্রিং ইন্টিগ্রেশন এক্সকুয়েরি সাপোর্ট এক্সকিউএস ব্যবহার করে বালিসেজ 2010 অরবিওন ফর্মঃ স্কেলার জন্য এক্সকুয়েরি (এক্সকিউজের উপরে বসে) জাভা এপিআই জাভা স্পেসিফিকেশনের জন্য এক্সএমএল ডেটা অ্যাক্সেস জাভা এপিআই অনুরোধ করে।