Sunday, December 29, 2019

আসুন HTML DOM কে জানি


লেখার সময়কাল:

15 March, 2016


English Version of this Article
 
মূল আলোচনায় যাওয়ার আগে আমরা নিচের HTML file টির দিকে একটু নজর বুলাই।


<!DOCTYPE html>
<html lang="en">
<head>
    <title>Site Title</title>
</head>
<body>

    <a href='#' >Link</a>
    
</body>
</html>



ব্রাউজারে যখন একটি HTML file/page লোড হয়, তখন ব্রাউজারটি ঐ পেইজে(HTML document) থাকা সবগুলো Object এর একটি নক্সা(model) তৈরি করে । এই model কেই বলে DOM (Document Object Model), মানে Document এ থাকা Object এর Model ।

পুরো HTML file টিকে ধরা হয় একটি Document ।এটি একটি Object ।

Document এর মধ্যে  থাকে html element । html element কে বলে root element এবং এটিও একটি Object ।

html element এর মধ্যে থাকে দু’টি এলিমেন্ট head এবং body । এরাও Object । বলা বাহুল্য, প্রত্যেকটি element ই এক একটি object ।

আবার head element এর মধ্যে থাকে title element । এবং title এর মধ্যে থাকে text ।

এদিকে body –র মধ্যে থাকতে পারে a element  । a এর মধ্যে থাকে href (attribute)।

এভাবে একটি Document এর মধ্যে অবস্থিত object গুলোর সুবিন্যস্ত চিত্র(নক্সা/মডেল) কে বলে HTML DOM ।

এখনো মাথায় ঢুকছে না ? তাহলে চট করে নিচের চিত্রটি দেখে ফেলুন।

w3c এর ‍স্ট্যান্ডার্ড অনুযায়ী তিন রকমের DOM রয়েছে , যথা-

১. HTML DOM (উপরে আলোচিত)
২. XML DOM – XML document এর জন্য ব্যবহৃত DOM
 ৩. Core DOM – সব ধরনের document এর জন্য ব্যবহৃত DOM

এখন কথা হচ্ছে DOM কেন প্রয়োজন ?

এক কথায় যদি বলতে হয় তবে বলা যায়, program/script (যেমন- JavaScript, PHP ইত্যাদি) দিয়ে HTML ফাইলের এলিমেন্ট(এবং কনটেন্ট)গুলোকে কান ধরে ওঠ-বস করানোর জন্য DOM প্রয়োজন । DOM স্ট্যান্ডার্ডটি আছে বলেই আমরা প্রোগ্রামিং/স্ক্রিপ্টিং করে HTML file এর এলিমেন্টকে ইচ্ছেমত ধরতে (get), পরিবর্তন করতে(change), মুছতে (delete), সরাতে (remove) এবং নতুন এলিমেন্ট যোগ করতে(add) পারি ।

সোজা কথায়, এলিমেন্ট গুলো একটা স্ট্যান্ডার্ড (DOM) মেনে  সুবিন্যস্তভাবে (hierarchically) থাকে বলেই সেগুলোকে প্রোগ্রামিং/স্ক্রিপ্টিং করে চালিত করা (manipulate) সম্ভব হচ্ছে ।

তাহলে উপরের আলোচনা থেকে একটা সিদ্ধান্তে আসা যায়… । আর সিদ্ধান্তটি হলো Web Programming  করতে চাইলে DOM কে জানতে হবে ।



1 comment:

  1. This comment has been removed by a blog administrator.

    ReplyDelete