در این قسمت می خواهیم شما را یا xml Dom آشنا کنیم. XML DOM خیلی مهم است.

چون اگر با این مقوله اشنا نباشید نمی توانید کارهای زیر را با  node های موجود در سند xml  انجام دهید :

  •  بدست اوردن مقدار هر node متنی
  •  ویرایش مقدار هر node متنی
  • حذف یا اضافه کردن node دلخواهتان از سند Xml

حالا اینکه node چیست ؟ تا اخر این صفحه را بخوانید به خوبی متوجه خواهید شد
برای یادگیری xml dom باید با موارد زیر آشنا باشید :

  •     HTML
  •     XML
  •     JavaScript

 DOM چیست ؟
استاندارد w3c است
dom روشی برای دسترسی و مدیریت کردن تگ ها ، صفات و محتوای انها در سندهایی چون html , xml است
به کمک dom می توان ساختار و سبک های سی اس اس و محتوا و مقدار صفات تگ ها را به کمک برنامه نویسی جاوا اسکریپت تغییر داد
سه نوع dom وجود دارد :

  •  core dom : استانداردی برای  هر نوع سند
  •  xml dom : استانداردی برای   سندهای xml
  •  html dom : استانداردی برای سند های html

dom دارای صفات و متدهایی است که به کمک انها می توان تگ ها ، مقدار تگ ها ، ویژگیهای سی اس اس تگ ها و مقدار صفات انها را تغییر داد یا به انها دسترسی داشت

 مدل  XML  DOM چیست ؟
یک مدل استاندارد برای xml است
یک واسط برنامه نویسی استاندارد برای xml است
زبان مستقل از سیستم است
استاندارد w3c است

در  مدل xml dom  می توان با استفاده از متدهای متنوعی که وجود دارد ، تمام  اشیا و ویژگیهایی  تگ های xml را مدیریت کرد

به عبارت دیگر :
مدل dom روشی است برای بدست اوردن ، تغییر دادن ، اضافه کردن و حذف کردن عناصر سند xml
node ها در dom
در مدل xml dom هر چیزی که در یک برنامه xml وجود دارد یک node نامیده می شود
( مثل : خود تگ ها ، صفات تگها ، مقدار هر تگ )
DOM می گوید :
خود سند(برنامه )  XML یک NODE از نوع سند است
هر تگ درون برنامه XML یک NODE از نوع ELEMENT است
هر متنی که درون ELEMENT ها ( تگ ها ) نوشته شده یک NODE از نوع TEXT است
هر صفت که در تگ ها تعریف شده ، یک NODE از نوع ATTRIBUTE است
توضیحات درون برنامه ، یک NODE از نوع COMMENT است

مثال ) برنامه BOOKS.XML را در نظر بگیرید
در این برنامه ، اطلاعات مربوط به کتابها بصورت دسته بندی شده شامل تگ های تو در توی زیر است و اطلاعات کتابهای مختلف در ان ذخیره شده است  :
نام BOOKSTORE ، نام تگ والد تمامتگ های برنامه است که معنی ان می شود کتاب فروشی
در هر کتاب فروشی ، کتابهای مختلف وحود دارد
تگ BOOK که صفت CATEGORY ان نوع کتاب را مشخص می کند
از انجا که هر کتاب دارای مشخصاتی مثل عنوان ، نویسنده ، سال چاپ و قیمت است
پس برای هر مورد یک تگ تعریف می کنیم و ان را درون تگ BOOK قرار می دهیم
و درون هر تگ اطلاعات متنی ان را می نویسیم
برنامه کامل شده را در قسمت پائین مشاهده می کنید

<?xml version=”1.0″ encoding=”ISO-8859-1″?>
<bookstore>
<book category=”cooking”>
<title lang=”en”>Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category=”children”>
<title lang=”en”>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category=”web”>
<title lang=”en”>XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category=”web” cover=”paperback”>
<title lang=”en”>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>

 در مثال بالا :

     NODE ریشه : همان تگ BOOKSTORE است و تمام NODE های  دیگر درون ان قرار گرفته اند

NODE با نام BOOKSTORE در بر گیرنده چهار NODE به نامBOOK است

اولین BOOK NODE در بر گیرنده چهار NODE دیگر است

<title>, <author>, <year>, and <price>

که هر کدامشان در بر گیرنده یک TEXT NODE هستند یعنی :

“Everyday Italian”, “Giada De Laurentiis”, “2005”, “30.00”

هر متنی درون TEXT NODE ذخیره می شود
عمومی ترین اشتباه  در پردازش های DOM  این است که انتظار داریم  هر NODE از نوع ELEMENT در بر دارنده یک NODE از نوع TEXT باشد
به هر حال ، متن هر NODE از نوع ELEMENT در یک NODE متنی ذخیره می شود

در این مثال :

<year>2005</year>

NODE از نوع ELEMENT به نام YEAR

یک NODE از نوع متنی با مقدار ۲۰۰۵ را در خود نگه می دارد

دقت کنید که ۲۰۰۵ مقدار یا VALUE برای NODE به نام YEAR نیست !
درخت node ها در مدل xml dom
xml dom نوودهای درون یک سند xml را بصورت یک درخت می بیند
تمام node ها در این درخت با هم ارتباط دارند
بنابراین می توان به هر node ای از این درخت که می خواهیم براحتی دست یابیم
محتوای هر node می تواند ویرایش شده یا حذف شود
و همچنین می توان node های جدیدی از نوع element ( تگ ) در این درخت ایجاد کرد
درخت node مجموعه ای از node ها و ارتباطات بین انها را نشان می دهد
ریشه درخت که در اصل درخت از ان شروع می شود همان node ریشه است
و انقدر درخت منشعب می شود و شاخه می دهد تا در نهایت به node های متنی می رسد

یعنی اگر ما این درخت node را از بالا ( ریشه ) به پائین رسم کنیم : node ریشه می شود اولین موجودیت در درخت و node های متنی می شوند اخرین شاخه ی این درخت
درخت زیر از روی node های موجود در سند xml به نام  book.xml ایجاد شده است