"কেমন চলছে?"
"দারুণ। অভিযোগ করতে পারি না। আজ বিলাবো আমাকে জাভাস্ক্রিপ্ট সম্পর্কে বলেছে। অবশ্যই সবকিছু নয়, তবে একটু বেশিই। অবশ্যই, আমি এখনও JS-এ কিছু লিখিনি, কিন্তু আমি মনে করি না এটা হবে কঠিন।"
"এবং এলি আমাকে JSON সিরিয়ালাইজেশন সম্পর্কে বলেছিলেন। এবং আপনি জ্যাকসন ফ্রেমওয়ার্ক এবং কীভাবে টীকা ব্যবহার করে 'পলিমরফিক ডিসিরিয়ালাইজেশন' সেট আপ করবেন তা ব্যাখ্যা করেছেন।"
"কোন উপায় নেই! আপনি এখন স্মার্ট, অ্যামিগো! একটি বাস্তব অশ্বপালন!"
"এবং তারপর কিছু!"
"ঠিক আছে। আসুন কাজ শুরু করি। আজ আমাদের কাছে একটি নতুন, আকর্ষণীয় বিষয় আছে: XML। "
"এক্সএমএল হল এমন ডেটা উপস্থাপন করার জন্য একটি মান যা মানুষ সহজেই পড়তে পারে-এবং প্রোগ্রামগুলির দ্বারা আরও সহজে। এখানে একটি উদাহরণ XML ফাইল:"
<data>
<owner first="Adam" last="Shelton">
<address>London</address>
</owner>
<cat name="Missy" age="15"/>
</data>
"এক্সএমএল-এর ভিত্তি হল ট্যাগ। ট্যাগ হল কোণ বন্ধনীর একটি শব্দ (এর চেয়ে বেশি এবং কম-চিহ্ন)। সেখানে খোলা এবং বন্ধ করার ট্যাগ রয়েছে। প্রতিটি খোলার ট্যাগে ঠিক একটি অনুরূপ ক্লোজিং ট্যাগ রয়েছে। খোলার ট্যাগের বৈশিষ্ট্য থাকতে পারে। "
"ট্যাগগুলি একটি ট্যাগের ভিতরে নেস্ট করা যেতে পারে, যার ফলে একটি উপাদান গাছ তৈরি হয়। শীর্ষ-স্তরের ট্যাগটিকে রুট বলা হয়: এতে চাইল্ড ট্যাগ রয়েছে, যার ফলস্বরূপ তাদের নিজস্ব চাইল্ড ট্যাগ রয়েছে।"
"এখানে কিছু উদাহরণঃ:"
ট্যাগ | বর্ণনা |
---|---|
< ডেটা > | ডেটা ট্যাগ খোলা হচ্ছে |
</ ডেটা > | ডেটা ট্যাগ বন্ধ করা হচ্ছে |
<বিড়ালের নাম = " মিসির " বয়স = " 15 ">৷ | বৈশিষ্ট্য সহ একটি ট্যাগ। বৈশিষ্ট্য মান উদ্ধৃতি মধ্যে মোড়ানো হয় |
<data> <owner> <cat name = "Missy"/> </owner> </data> |
নেস্টেড ট্যাগ। |
< বিড়ালের নাম = "মিসি" বয়স = "15" /> | একটি স্ব-বন্ধ ট্যাগ। এই ধরনের ট্যাগের ক্লোজিং ট্যাগের প্রয়োজন নেই। এবং তাদের চাইল্ড ট্যাগ থাকতে পারে না। |
<info> যেকোনো ধরনের তথ্য এখানে যেতে পারে </info> |
একটি ট্যাগে পাঠ্য ডেটা থাকতে পারে |
<info> যেকোনো ধরনের <data xxx="yyy"> </data> তথ্য <data 2xxx = "yyy"/> এখানে যেতে পারে </info> |
একটি ট্যাগে অন্যান্য ট্যাগের সাথে ছেদ করা টেক্সট ডেটা থাকতে পারে। |
"এটা সহজ দেখায়। কি ধরনের ট্যাগ আছে?"
"যেকোনো ধরনের। কোন সংরক্ষিত ট্যাগ নেই। XML হল যেকোন ডেটা বর্ণনা করার জন্য একটি ভাষা। লোকেরা তাদের প্রয়োজন মেটানো ট্যাগ নিয়ে আসে এবং কীভাবে সেগুলি ব্যবহার করতে হয় সে বিষয়ে সম্মত হয়।"
"মূলত, XML হল একটি উপাদান ট্রি হিসাবে ডেটা লেখার একটি উপায় যা একটি কম্পিউটার বুঝতে পারে।"
"আমি মনে করি আমি এখন এটি পেয়েছি। যাইহোক, আমার একটি প্রশ্ন আছে।"
"JSON একটি ব্রাউজার থেকে একটি সার্ভারে ডেটা পাঠাতে ব্যবহৃত হয়, কিন্তু XML কোথায় ব্যবহার করা হয়?"
"একই জায়গায় যেখানে JSON ব্যবহার করা হয়: ডেটা সংরক্ষণ এবং পাঠানোর জন্য।"
"ঠিক আছে, চলুন চালিয়ে যাই।"
"কল্পনা করুন যে আপনার কাছে একটি শেয়ার করা XML ফাইল আছে যা বিশজন লোকের দ্বারা লেখা একটি প্রোগ্রামের জন্য ডেটা সঞ্চয় করে। তাদের প্রত্যেকে তাদের নিজস্ব ট্যাগ নিয়ে আসে এবং তারা দ্রুত একে অপরের সাথে হস্তক্ষেপ করতে শুরু করে।"
"ট্যাগগুলি অনন্য তা নিশ্চিত করার জন্য, উপসর্গগুলি উদ্ভাবন করা হয়েছিল। তারা দেখতে এইরকম:"
ট্যাগ | বর্ণনা |
---|---|
< প্রাণী :বিড়াল> | পশু উপসর্গ সহ একটি বিড়াল ট্যাগ |
< animal :cat> </ animal: cat> < zoo :cat> </ zoo :cat> |
ভিন্ন উপসর্গ সহ দুটি বিড়াল ট্যাগ। |
< প্রাণী : বিড়াল চিড়িয়াখানা : নাম = "এমএক্স"> | পশু উপসর্গ সহ একটি বিড়াল ট্যাগ । চিড়িয়াখানা উপসর্গ সহ একটি নামের বৈশিষ্ট্য । |
"উপসর্গগুলিকে নেমস্পেসও বলা হয়। যদি আমরা সেগুলিকে নামস্থান বলি, তাহলে টেবিলের শেষ বিবরণটি 'প্রাণীর নামস্থানের সাথে একটি বিড়াল ট্যাগ। চিড়িয়াখানার নামস্থানের সাথে একটি নাম বৈশিষ্ট্য' হয়ে যায়।"
"যাইহোক, আপনি কি মনে রাখবেন যে জাভাতে প্রতিটি ক্লাসের একটি ছোট নাম এবং একটি দীর্ঘ অনন্য নাম রয়েছে যাতে প্যাকেজের নাম অন্তর্ভুক্ত থাকে, যা প্যাকেজ আমদানি করার সময়ও নির্দিষ্ট করা হয়?"
"হ্যাঁ।"
"ঠিক আছে, উপসর্গগুলিরও একটি অনন্য দীর্ঘ নাম রয়েছে এবং এটি আমদানি করার সময়ও নির্দিষ্ট করা হয়: "
< data xmlns:soap="http://cxf.apache.org/bindings/soap" > < soap :item> < soap :info/> </ soap :item> </ data >
"' xml ns :soap' মানে ' XML — n ame s pace SOAP'"
"আপনি এমন ট্যাগগুলির অনন্য নামও সেট করতে পারেন যার কোনো উপসর্গ নেই: "
<data xmlns = "http://www.springframework.org/schema/beans" xmlns: soap = "http://cxf.apache.org/bindings/soap" xmlns:task = "http://www.springframework .org/schema/task" > < soap :item> < soap :info/> < task :info/> </ soap :item> </data>
"'xmlns=…' খালি উপসর্গের জন্য নামস্থান সেট করে। অন্য কথায়, এটি উপসর্গ ছাড়াই ট্যাগের জন্য নামস্থান সেট করে, যেমন উপরের উদাহরণে ডেটা।"
"আপনার ইচ্ছামত একটি নথিতে যতগুলি নামস্থান থাকতে পারে, তবে প্রত্যেকটির একটি অনন্য নাম থাকতে হবে।"
"আমি দেখছি। কেন এই নেমস্পেসে এমন অদ্ভুত অনন্য নাম আছে?"
"তারা সাধারণত একটি URL নির্দেশ করে যা একটি নথির দিকে নির্দেশ করে যা নেমস্পেস এবং/অথবা এর XML ট্যাগগুলি বর্ণনা করে।"
"আপনি আজ আমার উপর অনেক তথ্য ডাম্প করেছেন. আর কি আছে?"
"এখনও আরো একটু বাকি আছে।"
"প্রথম, XML-এর একটি শিরোনাম রয়েছে৷ এটি একটি বিশেষ লাইন যা XML সংস্করণ এবং ফাইল এনকোডিং বর্ণনা করে৷ "এটি সাধারণত এইরকম দেখায়:"
"এটি সাধারণত এই মত দেখায়:"
<?xml সংস্করণ = "1.0" এনকোডিং = "UTF-8"?>
<data xmlns:soap = "http://cxf.apache.org/bindings/soap">
<সাবান:আইটেম>
<soap:info/>
</soap:item>
</data>
"আপনি XML-এ মন্তব্যও যোগ করতে পারেন। একটি মন্তব্য শুরু করতে, '<!--' ব্যবহার করুন। এটি শেষ করতে, '-->' ব্যবহার করুন।"
<?xml version = "1.0" encoding = "UTF-8"?>
<data xmlns:soap = "http://cxf.apache.org/bindings/soap">
<soap:item>
<!-- <soap:info/> -->
</soap:item>
<!-- This is also a comment -->
</data>
"এখন পর্যন্ত বুঝেছি।"
"কিছু চিহ্নের (< > " &) এক্সএমএল-এ বিশেষ অর্থ রয়েছে, তাই সেগুলি অন্য কোথাও ব্যবহার করা যাবে না। আমরা একটি এস্কেপ সিকোয়েন্সের মাধ্যমে এই সীমাবদ্ধতার কাছাকাছি যেতে পারি—অন্যান্য অক্ষর/চিহ্নগুলিকে উপস্থাপন করতে ব্যবহৃত অক্ষরের একটি সেট। এখানে তাদের কিছু:"
এস্কেপ সিকোয়েন্স | প্রতীক যে এটি প্রতিস্থাপন |
---|---|
& | এবং |
" | " |
< | < |
> | > |
' | ' |
"এবং এখানে XML এ এমবেড করা কোডের একটি উদাহরণ রয়েছে:"
জাভা কোড | XML-এ জাভা কোড |
---|---|
|
<কোড> যদি (a < b) System.out.println( " a হল সর্বনিম্ন " ); </code> |
"ওহ... সুন্দর লাগছে না।"
"আপনি মনে করবেন যে জাভাতে কিছু অক্ষরও পালানো হয়েছে? উদাহরণস্বরূপ, "\"। এবং এই ক্রমটিও স্ট্রিং-এ লেখার সময় দুবার লিখতে হবে? তাই এটি একটি সাধারণ ঘটনা।"
"ঠিক আছে."
"আমার আজকের জন্য এতটুকুই।"
"হুররে। আমি অবশেষে বিরতি নিতে পারি।"
GO TO FULL VERSION