مدل شیءگرای سند

**مدل شیءگرای سند** یا **دام** (DOM - Document Object Model) عنوان یکی از دو ساختوارهٔ (architecture) اصلی است (در کنار اس‌اِی‌اکس) که بر اساس آن سندهای اکس‌ام‌ال را به اشیایی که در بردارندهٔ آن است، تجزیه نموده، و آن‌ها را به‌صورت یک ساختار درختی داده‌ها در فضای حافظه اصلی پهن می‌کند. ساختوارهٔ دام، نه به زبان برنامه‌نویسی خاصّی وابستگی دارد و نه به سکّوی برنامه‌نویسی ویژه‌ای، بلکه، به منظور اجراء و پیاده‌سازی آن باید از یک زبان برنامه‌نویسی سطح بالا همچون جاوا، سی‌شارپ، جاوااسکریپت یا مشابه آن‌ها سود بجوییم. آنسوی رابط کاربر سند با مدلی شیءگرا نمایانده می‌شود.

## انگیزه‌ها و اهداف
سندهای اکس‌ام‌ال با دربرداشتن متون زبانی به بیان و نمایش داده‌های گوناگون اقدام می‌کنند. ابداع و به‌کارگیری زبان اکس‌ام‌ال را می‌توان آغاز ماشینی کردن ساختارمند و مقیاس پذیر داده‌ها هم از جنس رابطه‌ای و هم از انواع پیچیده‌تر آن به حساب آورد.

برعکس متون معمولی رایانه‌ای در مورد متن‌های اکس‌ام‌ال به دلیل در درون داشتن انواع داده‌ها و دانسته‌ها در مقیاس‌ها و در سلسله مراتب مختلف اعمال فنون سنتی پردازش‌های دنباله‌ای فایل‌ها نه عملی‌ست و نه کارآ. این مشکلات به ویژه در حالات مربوط به افزودن اجزاء و عناصر جدید یا کاستن و برداشتن آن‌ها به شکل پویش مندانه (Dynamic) و در زمان اجراء به اوج می‌رسد.

در آغاز، گونه‌های مختلف دام توسط مرورگرهای وب برای دستکاری عناصر سندهای اچ‌تی‌ام‌ال پیاده‌سازی می‌شدند. این موضوع، کنسرسیوم وب جهان‌شمول را وادار کرد که با یک سری مشخصات استاندارد برای دام پیشگام شود (از این رو آن را W3CDOM نیز می‌گویند).

دام هیچ تنگنایی روی ساختار داده‌های دربرگیرنده سند قرار نمی‌دهد. یک سند خوش‌ساختار می‌تواند به کمک دام شکل درخت‌گونه به خودش بگیرد.

بیشتر متن‌شکن‌های اکس‌ام‌ال (XML parsers) (مانند Xerces) و پردازندگان اکس‌اس‌ال (مانند Xalan) پدید آمده‌اند که از ساختار درختی سود ببرند. چنین پیاده‌سازی، نیازمند آن است که تمامی محتوای سند شکسته گردیده و در حافظه نگهداری شود. از این رو دام بیشتر برای کارهایی سودمند است که عناصر سند باید به‌طور تصادفی دستیابی و دستکاری شوند. برای کاربردهای اکس‌ام‌ال-محوری که دربرگیرندهٔ دسترسی انتخابی یک خواندن/نوشتن به ازای شکستن است، دام بالاسری قابل ملاحظه‌ای بر حافظه تحمیل می‌کند. در این کاربردها، مدل اس‌اِی‌اکس (SAX - Simple API for XML) از دید سرعت و مصرف حافظه سودمندتر است.

## سطح‌ها
مشخصات کنونی دام در سطح ۲ است، اما برخی مشخصات سطح ۳ اکنون از پیشنهادهای W3C هستند.

## سطح صفر
: دربرگیرنده همه مشخصه‌های ویژه سازندگان که پیش از آفرینش سطح ۱ DOM وجود داشتند، همچون document.images, document.forms, document.layers، و document.all است. آگاه باشید که این مشخصات رسمی و منتشر شده توسط W3C نیستند بلکه بیشتر مرجعی به چیزی که پیش از فرایند استانداردسازی وجود داشت هستند.
**سطح ۱**
: پیمایش سند(HTML و XML) با DOM(ساختار درختی) و دستکاری محتوا (همچنین اضافه کردن عناصر). عنصرهای خاص HTML نیز دربر گرفته شده‌اند.
**سطح ۲**
: پشتیبانی از فضای نام XML، دیدها و رویدادهای پالوده.
**سطح ۳**
: در بر گیرنده شش مشخصه متفاوت است:
# هسته DOM سطح ۳
# بارگذاری و ذخیره DOM سطح ۳
# XPath برای DOM سطح ۳
# دیدارها و قالب‌بندی DOM سطح ۳
# نیازمندی‌های DOM سطح ۳
# معتبرسازی DOM سطح ۳

که DOM را بیشتر گسترش می‌دهند.

## کاربرد در مرورگرهای وب
در گذشته، پیاده‌سازی‌های گوناگون دی‌اُ‌ام در مرورگرهای مختلف به اشکالات هم‌عملپذیری انجامیده بود. از این رو، میان برنامه‌نویسان وب معمول است که وجود یک خاصیت را پیش از بکارگیری آن آزمایش کنند. خرده‌برنامه زیر چگونگی آزمایش برای متدهای کلیدی W3C DOM را قبل از استفاده از سایر بخش‌های آن نشان می‌دهد:


```javascript
if (document.getElementById && document.getElementsByTagName) {
     // as the key methods getElementById and getElementsByTagName
     // are available is is relatively safe to assume W3CDOM support.

     obj = document.getElementById("navigation")
     // other code which uses the W3CDOM
     // .....
  }
```


مرورگرهای اینترنت‌اکسپلورر مایکروسافت (نسخه ۵(۱۹۹۹)،... نسخه ۶(۲۰۰۱)) در سال ۲۰۰۵ از جملهٔ پرکاربردترین مرورگرها هستند و به طرز معقولی بیشتر خاصیّت‌های W3CDOM را پشتیبانی می‌کنند. مرورگرهای مبتنی بر Gecko، همچون موزیلا و فایرفاکس و دیگران نیز چنین‌اند؛ بنابراین، مشکلات استفاده از W3CDOM آنگونه که در سال ۲۰۰۰ که نسخه‌های ۴ اینترنت‌اکسپلورر و نت‌سکیپ‌نویگیتور به فراوانی استفاده می‌شدند نیست. البته این فرضیه بر این پایه است که بیشتر مردم از مرورگری که بیشتر از ۶ سال عمر دارد استفاده نمی‌کنند، که اتفاقاً توسط آمار استفاده از مرورگرها تأیید شده‌است. جدول مقاله مقایسهٔ موتورهای طرح‌بندی(DOM) نشان می‌دهد چه متدها و صفاتی را می‌توان در مرورگرهای گوناگون با ایمنی استفاده کرد.

## پانوشته‌ها

## جستارهای وابسته
* اس‌اِی‌اکس

## منابع
* اینترنت و وب جهان‌شمول: چگونه (آنرا) برنامه‌نویسی کنیم (چاپ چهارم) 
* اینترنت و وب جهان‌شمول: چگونه (آنرا) برنامه‌نویسی کنیم  (چاپ سوم) 
* سی‌شارپ برای برنامه‌نویسان پرتجربه

## پیوند به بیرون

* مدل شیءگرای سند (انگلیسی)

رده:اچ‌تی‌ام‌ال
رده:استانداردهای اکس‌ام‌ال-مبنا
رده:استانداردهای وب
رده:مدل‌های شیءگرایی
رده:واسط‌های برنامه‌نویسی کاربردی
رده:استانداردهای ائتلاف وب جهان‌گستر