উদাহরণ সহ XML Namespace ব্যবস্থাপনা

XML Namespace - জাভা এক্সএমএল (Java XML) - Java Technologies

273

XML Namespace হল একটি প্রযুক্তি যা XML ডকুমেন্টের উপাদান এবং অ্যাট্রিবিউটগুলিকে একে অপরের থেকে আলাদা করার জন্য ব্যবহৃত হয়, যাতে একাধিক ডকুমেন্টের মধ্যে নামের সংঘর্ষ (name conflict) প্রতিরোধ করা যায়। XML Namespace সাধারণত একটি URI (Uniform Resource Identifier) দ্বারা চিহ্নিত করা হয় এবং এটি XML উপাদান বা অ্যাট্রিবিউটের সাথে যুক্ত থাকে।

XML Namespace এর গুরুত্ব

XML Namespace এর সাহায্যে একই নামের একাধিক উপাদান বা অ্যাট্রিবিউট একই XML ডকুমেন্টে থাকলেও তারা একে অপরের সাথে মিলবে না। এটি বিশেষত গুরুত্বপূর্ণ যখন একাধিক সোর্স থেকে ডেটা একত্রিত করা হয়।

XML Namespace উদাহরণ

ধরা যাক, আমরা একটি XML ডকুমেন্ট তৈরি করতে চাই যেখানে দুটি পৃথক ধরনের ডেটা রয়েছে: একটি bookstore এর তথ্য এবং অন্যটি library এর তথ্য। যদি আমরা একই নামের উপাদান ব্যবহার করি (যেমন <book>), তবে Namespace ব্যবহার করতে হবে যাতে প্রতিটি উপাদান পৃথকভাবে চিহ্নিত করা যায়।

<library xmlns:book="http://www.example.com/book" xmlns:lib="http://www.example.com/library">
    <book:book>
        <book:title>Java Programming</book:title>
        <book:author>John Doe</book:author>
    </book:book>
    <lib:book>
        <lib:title>Learning XML</lib:title>
        <lib:author>Jane Doe</lib:author>
    </lib:book>
</library>

এখানে:

  • xmlns:book="http://www.example.com/book": এটি book নামে একটি Namespace নির্ধারণ করে।
  • xmlns:lib="http://www.example.com/library": এটি lib নামে একটি Namespace নির্ধারণ করে।
  • <book:book> এবং <lib:book> এই দুটি উপাদান আলাদা Namespace এর অধীনে রয়েছে, যদিও তাদের নাম এক।

Java তে XML Namespace ব্যবস্থাপনা

Java তে XML Namespace ব্যবহার করার জন্য, JAXP লাইব্রেরি ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো যেখানে Java তে XML ডকুমেন্টে Namespace ব্যবস্থাপনা করা হয়েছে।

উদাহরণ: Java তে XML Namespace পার্সিং

ধরা যাক আমাদের কাছে নিচের মতো একটি XML ডকুমেন্ট আছে, যেখানে দুটি Namespace ব্যবহৃত হয়েছে:

<library xmlns:book="http://www.example.com/book" xmlns:lib="http://www.example.com/library">
    <book:book>
        <book:title>Java Programming</book:title>
        <book:author>John Doe</book:author>
    </book:book>
    <lib:book>
        <lib:title>Learning XML</lib:title>
        <lib:author>Jane Doe</lib:author>
    </lib:book>
</library>

এখন আমরা এই XML ডকুমেন্টটি Java ব্যবহার করে পার্স (parse) করব এবং book এবং lib Namespace থেকে ডেটা এক্সট্র্যাক্ট করব।

Java কোড:

import javax.xml.parsers.*;
import org.w3c.dom.*;
import javax.xml.xpath.*;

public class NamespaceExample {
    public static void main(String[] args) throws Exception {
        // XML ডকুমেন্ট লোড করা
        String xml = "<library xmlns:book=\"http://www.example.com/book\" xmlns:lib=\"http://www.example.com/library\">" +
                     "<book:book>" +
                     "<book:title>Java Programming</book:title>" +
                     "<book:author>John Doe</book:author>" +
                     "</book:book>" +
                     "<lib:book>" +
                     "<lib:title>Learning XML</lib:title>" +
                     "<lib:author>Jane Doe</lib:author>" +
                     "</lib:book>" +
                     "</library>";

        // XML ডকুমেন্ট পার্স করা
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        InputSource inputSource = new InputSource(new java.io.StringReader(xml));
        Document document = builder.parse(inputSource);

        // XPathFactory এবং XPath অবজেক্ট তৈরি করা
        XPathFactory xPathFactory = XPathFactory.newInstance();
        XPath xpath = xPathFactory.newXPath();

        // Namespace নির্ধারণ করা
        NamespaceContext nsContext = new NamespaceContext() {
            public String getNamespaceURI(String prefix) {
                if ("book".equals(prefix)) {
                    return "http://www.example.com/book";
                } else if ("lib".equals(prefix)) {
                    return "http://www.example.com/library";
                }
                return null;
            }

            public String getPrefix(String uri) {
                return null; // আমরা শুধু URI থেকে Prefix ফিরিয়ে দেব
            }

            public Iterator getPrefixes(String uri) {
                return null;
            }
        };
        
        xpath.setNamespaceContext(nsContext);

        // XPath এক্সপ্রেশন তৈরি করা এবং কার্যকর করা
        XPathExpression expr = xpath.compile("//book:book/book:title");
        NodeList nodeList = (NodeList) expr.evaluate(document, XPathConstants.NODESET);

        // ফলস্বরূপ প্রিন্ট করা
        System.out.println("Book Titles from 'book' namespace:");
        for (int i = 0; i < nodeList.getLength(); i++) {
            System.out.println(nodeList.item(i).getTextContent());
        }

        // অন্য Namespace থেকে তথ্য পাওয়া
        expr = xpath.compile("//lib:book/lib:title");
        nodeList = (NodeList) expr.evaluate(document, XPathConstants.NODESET);

        System.out.println("Book Titles from 'lib' namespace:");
        for (int i = 0; i < nodeList.getLength(); i++) {
            System.out.println(nodeList.item(i).getTextContent());
        }
    }
}

কোড ব্যাখ্যা:

  1. NamespaceContext: এখানে NamespaceContext ইন্টারফেস ব্যবহার করা হয়েছে যাতে XPath এক্সপ্রেশন কাজ করার সময় Namespace URI গুলি সঠিকভাবে চিহ্নিত করা যায়।
  2. XPath: XPath এক্সপ্রেশন ব্যবহার করে book:book/book:title এবং lib:book/lib:title থেকে উপাদানগুলি বের করা হয়েছে।
  3. Namespace URI: book এবং lib এর জন্য নির্দিষ্ট Namespace URI দেওয়া হয়েছে।

আউটপুট:

Book Titles from 'book' namespace:
Java Programming
Book Titles from 'lib' namespace:
Learning XML

XML Namespace ব্যবস্থাপনা মূল পয়েন্ট:

  • Namespace URI: একটি নির্দিষ্ট URI দ্বারা Namespace চিহ্নিত করা হয়।
  • Prefix: একটি প্রিফিক্স (যেমন book, lib) নামকরণ করা হয়, যা Namespace URI এর সাথে সম্পর্কিত।
  • XPath: XPath এক্সপ্রেশন ব্যবহার করে XML ডকুমেন্টে Namespace-এর অধীনে উপাদান নির্বাচন করা হয়।

এভাবে Java তে XML Namespace ব্যবহার করে XML ডেটা এক্সট্র্যাক্ট এবং ম্যানিপুলেট করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...