অ্যাপাচি জারসেস (Apache Xerces) একটি Java ভিত্তিক XML প্রসেসিং লাইব্রেরি যা XML ডকুমেন্ট পার্স, ভ্যালিডেশন, সিরিয়ালাইজেশন এবং অন্যান্য কার্যক্রম সমর্থন করে। XML Namespace একটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য যা XML ডকুমেন্টের মধ্যে উপাদান এবং অ্যাট্রিবিউটের নামগুলোকে একে অপরের সাথে সংঘর্ষ না হওয়ার জন্য আলাদা করে। Namespace ব্যবহারের মাধ্যমে একই নামের একাধিক এলিমেন্ট বা অ্যাট্রিবিউট আলাদা করা যায়।
Xerces ব্যবহার করে XML ডকুমেন্টে Namespace প্রসেস করার জন্য, আপনাকে কিছু গুরুত্বপূর্ণ বিষয় জানতে হবে যেমন Prefix, URI এবং Qualified Names। এখানে Xerces দিয়ে XML ডকুমেন্টে Namespace প্রসেস করার উদাহরণ দেওয়া হলো।
Namespace কি?
Namespace হল একটি নির্দিষ্ট URI (Uniform Resource Identifier) যা XML ডকুমেন্টে এলিমেন্ট এবং অ্যাট্রিবিউটের নাম আলাদা করতে ব্যবহৃত হয়। XML ডকুমেন্টের বিভিন্ন অংশের মধ্যে নামের সংঘর্ষ এড়াতে Namespace ব্যবহৃত হয়।
উদাহরণস্বরূপ:
<book xmlns="http://example.com/book">
<title>Learning XML</title>
<author>John Doe</author>
</book>
এখানে, xmlns="http://example.com/book" Namespace URI নির্দেশ করে যে title এবং author এলিমেন্টগুলি এই Namespace এর আওতায় রয়েছে।
Xerces দিয়ে Namespace প্রসেস করা
Xerces এর মাধ্যমে XML ডকুমেন্টে Namespace প্রসেস করার জন্য SAX এবং DOM পদ্ধতি ব্যবহার করা যেতে পারে। Namespace হ্যান্ডলিংয়ের জন্য XML ডকুমেন্টের Prefix এবং URI যথাযথভাবে ম্যানেজ করা হয়।
1. SAX Parser ব্যবহার করে Namespace প্রসেস করা
SAX (Simple API for XML) একটি ইভেন্ট-ভিত্তিক XML পার্সিং পদ্ধতি। SAX ব্যবহার করে XML ডকুমেন্ট পার্স করা হলে, Namespace ইভেন্ট হিসেবে কনফিগার করা হয়।
SAX Parser উদাহরণ:
ধরা যাক, আমাদের একটি XML ডকুমেন্ট রয়েছে যেখানে Namespace ব্যবহৃত হয়েছে।
book.xml (XML ফাইল):
<?xml version="1.0" encoding="UTF-8"?>
<book xmlns="http://example.com/book">
<title>Learning XML</title>
<author>John Doe</author>
</book>
SAXParser ব্যবহার করে Namespace প্রসেস করা:
import org.xml.sax.*;
import org.xml.sax.helpers.*;
public class SAXNamespaceExample {
public static void main(String[] args) throws Exception {
// SAXParserFactory এবং SAXParser তৈরি করা
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
// XML ফাইল পার্স করার জন্য Namespace হ্যান্ডলার তৈরি করা
DefaultHandler handler = new DefaultHandler() {
// Start element ইভেন্ট হ্যান্ডল করা
public void startElement(String uri, String localName, String qName, Attributes attributes) {
if ("title".equals(localName)) {
System.out.println("Title Element: " + qName);
} else if ("author".equals(localName)) {
System.out.println("Author Element: " + qName);
}
System.out.println("Namespace URI: " + uri); // Namespace URI print করা
}
// End element ইভেন্ট হ্যান্ডল করা
public void endElement(String uri, String localName, String qName) {
System.out.println("End Element: " + qName);
}
// Characters ইভেন্ট হ্যান্ডল করা
public void characters(char[] ch, int start, int length) {
System.out.println("Content: " + new String(ch, start, length));
}
};
// XML ফাইল পার্স করা
saxParser.parse("book.xml", handler);
}
}
আউটপুট (SAX Namespace Parsing):
Title Element: title
Namespace URI: http://example.com/book
Content: Learning XML
End Element: title
Author Element: author
Namespace URI: http://example.com/book
Content: John Doe
End Element: author
End Element: book
এখানে, SAXParser ব্যবহার করে XML ডকুমেন্ট পার্স করা হয়েছে এবং Namespace URI সঠিকভাবে প্রসেস করা হয়েছে।
2. DOM Parser ব্যবহার করে Namespace প্রসেস করা
DOM (Document Object Model) হল একটি ডকুমেন্ট-ভিত্তিক XML পার্সিং পদ্ধতি, যেখানে পুরো XML ডকুমেন্টটি মেমোরিতে লোড হয়। DOM ব্যবহার করে XML ডকুমেন্টের Namespace এবং Prefix প্রসেস করা সহজ।
DOM Parser উদাহরণ:
import org.w3c.dom.*;
import javax.xml.parsers.*;
public class DOMNamespaceExample {
public static void main(String[] args) throws Exception {
// XML ফাইল লোড এবং পার্স করা
File xmlFile = new File("book.xml");
// DocumentBuilderFactory তৈরি করা
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true); // Namespace-aware তৈরি করা
DocumentBuilder builder = factory.newDocumentBuilder();
// XML ডকুমেন্ট পার্স করা
Document document = builder.parse(xmlFile);
// রুট এলিমেন্ট পাওয়া (যেমন: <book>)
Element root = document.getDocumentElement();
System.out.println("Root Element: " + root.getNodeName());
// namespace URI পাওয়া
String namespaceURI = root.getNamespaceURI();
System.out.println("Namespace URI: " + namespaceURI);
// উপাদান গুলি প্রক্রিয়া করা
NodeList nodeList = document.getElementsByTagName("title");
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
System.out.println("Element: " + node.getNodeName() + ", Content: " + node.getTextContent());
}
}
}
আউটপুট (DOM Namespace Parsing):
Root Element: {http://example.com/book}book
Namespace URI: http://example.com/book
Element: title, Content: Learning XML
এখানে, DOMParser ব্যবহার করে XML ডকুমেন্টে Namespace URI সঠিকভাবে পাওয়া এবং title এলিমেন্টের কনটেন্ট প্রিন্ট করা হয়েছে।
সারাংশ
- XML Namespace হল একটি URI যা XML ডকুমেন্টের উপাদান এবং অ্যাট্রিবিউটকে আলাদা করে রাখে, যাতে একাধিক উপাদান বা অ্যাট্রিবিউটের নামের মধ্যে সংঘর্ষ না হয়।
- Xerces এর মাধ্যমে SAX এবং DOM পদ্ধতি ব্যবহার করে XML ডকুমেন্টের Namespace প্রসেস করা যায়।
- SAX পদ্ধতিতে ইভেন্ট-ভিত্তিক XML পার্সিং করা হয়, যেখানে DOM পদ্ধতিতে পুরো XML ডকুমেন্ট মেমোরিতে লোড হয়ে ট্রি স্ট্রাকচার হিসেবে ম্যানিপুলেট করা হয়।
- Namespace-aware XML পার্সিং নিশ্চিত করতে DOM এবং SAX উভয়ই Namespace সমর্থন করে, যা XML ডকুমেন্টের জন্য প্রয়োজনীয় ভ্যালিডেশন এবং প্রসেসিং কার্যক্রম সম্পাদন করতে সাহায্য করে।
Xerces ব্যবহারে XML ডকুমেন্টের Namespace হ্যান্ডলিং সহজভাবে করা সম্ভব, যা ডেটার সঠিকতা এবং নামের সংঘর্ষ এড়াতে গুরুত্বপূর্ণ।
Read more