l) يک رابط برنامه نويسي براي سندهاي XML و Html است . با استفاده از اينترفيس فوق، نحوه دستيابي و انجام پردازش هاي لازم در رابطه با سند هاي XML و Html فراهم مي گردد . برنامه نويسان با استفاده از DOM ، قادر به ايجاد يک سند ،حرکت در طول ساختار سند، افزودن ، اصلاح و يا حذف المان هاي يک سند XML و يا Html مي باشند . DOM توسط کنسرسيوم وب استاندارد و بمنظور استفاده از طريق زبان هاي برنامه نويسي متعددي طراحي شده است .
گره ها
برنامه اي با نام پارسر، امکان استقرار يک سند XML در حافظه را فراهم مي نمايد . پس از استقرار سند در حافظه ، اطلاعات مربوطه بکمک DOM ، قابل بازيابي و پردازش خواهد بود . DOM ، يک نمايش شبه درختي از يک سند XML را ايجاد مي نمايد . المان Document ، داراي بالاترين سطح در درخت ايجاد شده است . المان فوق ، داراي يک و يا چندين فرزند است . يک اينترفيس گره ، امکان خواندن و يا نوشتن المان هاي خاصي در ساختار درختواره اي يک سند XML را ميسر مي نمايد .با استفاده از خصلت ChildNodes مربوط به المان Document و بکارگيري يک حلقه تکرار مي توان هر يک از گره ها را انتخاب و در ادامه عمليات مورد نظر در رابطه با آن را انجام داد . پارسر شرکت ماکروسافت (MSXML) ، داراي توابع متفاوت بمنظور حرکت در طول درخت، دستيابي به گره ها بهمراه خصلت مربوطه، درج و حذف گره ها و تبديل ساختار درختي به شکل اوليه XML است . در حال حاضر، سيزده نوع متفاوت گره توسط پارسرشرکت ماکروسافت، حمايت مي گردد . جدول زير متداولترين نوع گره ها را نشان مي دهد .
مثال
نوع گره
کد:
<!DOCTYPE food SYSTEM "food.dtd">
Document type
<?xml version="1.0"?>
Processing instruction
<drink type="tea">Irani</drink>
Element
type="tea"
Attribute
Irani
Text
استفاده از پارسر
بمنظور خواندن، ويرايش و يا ايجاد و پردازش يک سند XML ، مي بايست از يک پارسر استفاده کرد . پارسر شرکت ماکروسافت، يک عنصر مبتني بر COM بوده که بهمراه IE نسخه پنج ، ارائه شده است . پس از نصب مرورگر فوق، امکان استفاده از پارسر فراهم مي گردد . پارسر MSXML ، داراي امکانات متعدد برنامه نويسي بمنظور استفاده توسط زبانهاي زير است :
حمايت از جاوااسکريپت VBScript Perl جاوا و ++ C
حمايت از استاندارد کنسرسيوم وب و XML DOM
حمايت از DTD و معتبر سازي
مثال : نحوه ايجاد شي Document ، با استفاده جاوااسکريپت ، VBscript و ASP در جدول زير نشان داده شده است :
مثال
تکنولوژي
کد:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
Javascript
set xmlDoc = CreateObject("Microsoft.XMLDOM")
VBscript
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
ASP
استقرار يک سند XML در حافظه
کدهاي زير نحوه استقرار يک سند XML با نام Test.xml در حافظه را نشان مي دهد :
استقرار يک سند XML در حافظه
کد:
<script language="JavaScript">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("Test.xml")
// ....... پردازش هاي لازم
</script>
اولين خط در اسکريپت هاي فوق ، يک نمونه از پارسر XML شرکت ماکروسافت را ايجاد مي نمايد . در دومين خط ، به پارسر اعلام مي گردد منتظر دريافت کامل سند XML بوده قبل از اينکه پردازش خود را آغاز نمايد . در سومين خط ، به پارسر اعلام شده است که يک سند XML با نام Test.xml را در حافظه مستقر نمايد .
استقرار متن XML در پارسر
کدهاي زير، نحوه استقرار يک رشته متن را در پارسر XML نشان مي دهد . در مثال فوق از متد LoadXML در مقابل متد load استفاده شده است . از متد loadXML بمنظور استقرار يک رشته متن در پارسر استفاده مي گردد .
استقرار يک رشته متن XML در حافظه
کد:
<script language="JavaScript">
var text="<note>"
text=text+"<to>Ali</to><from>Reza</from>"
text=text+"<heading>Reminder</heading>"
text=text+"<body>Don't forget me this weekend!</body>"
text=text+"</note>"
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.loadXML(text)
// ....... پردازش هاي لازم
</script>
شي ParseError
خطاي مربوط به فايل : با استفاده از شي ParseError ، مي توان از کد ، متن خطاء و حتي شماره خطي که خطاء در آن اتفاق افتاده است ، آگاهي يافت . در برنامه زير پارسر، سعي در استقرار سندي XML در حافظه نموده که وجود خارجي ندارد . پس از تشخيص خطاء ، برخي از خصلت هاي مربوط به خطاء در خروجي نمايش داده خواهد شد .
تشخيص خطاء و استفاده از شي ParseError در رابطه با وجود يک فايل
کد:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("Test1.xml")
document.write("<br>Error Code: ")
document.write(xmlDoc.parseError.errorCode)
document.write("<br>Error Reason: ")
document.write(xmlDoc.parseError.reason)
document.write("<br>Error Line: ")
document.write(xmlDoc.parseError.line)
خطاي مربوط به XML . فرض کنيد يک سند XML که "خوش شکل " نمي باشد، توسط پارسر خوانده شود . کدهاي زير نحوه تشخيص و برخورد با خطاء را نشان مي دهد :
تشخيص خطاء و استفاده از شي ParseError در رابطه با سند "خوش شکل "
کد:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note_error.xml")
document.write("<br>Error Code: ")
document.write(xmlDoc.parseError.errorCode)
document.write("<br>Error Reason: ")
document.write(xmlDoc.parseError.reason)
document.write("<br>Error Line: ")
document.write(xmlDoc.parseError.line)
خصلت هاي ParseError
عملکرد
خصلت
کد خطاي بوجود آمده ، برگردانده مي شود .
errorCode
علت خطاي بوجود آمده ،برگردانده مي شود .
reason
شماره خط خطاي بوجود آمده ، برگردانده مي شود
line
محل بروز خطاء در خط مربوطه را برمي گرداند .
linePos
رشته اي که شامل خط مربوط به خطاي بوجود آمده است، برگردانده مي شود
srcText
url مربوط به سند مستقر سده در حافظه ، بر گردانده مي شود .
url
محل بروز خطاء در فايل مربوطه، برگردانده مي شود .
filePos
حرکت در طول درخت
يکي از متداولترين روش هاي بازيابي المان هاي يک سند XML ، حرکت در طول درخت ( از گره اي به گره ديگر ) و استخراج مقدار متن ذخيره شده بهمراه هر يک از المان ها است . کدهاي نوشته شده زير ، امکان حرکت در طول يک درخت XML را فراهم و در ادامه هر يک از المان هاي سند XML ، در خروجي نمايش داده مي شوند ( کدها با استفاده از VBScript نوشته شده اند ) .
حرکت در طول درخت و نمايش المان هاي يک سند XML
کد:
set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
for each x in xmlDoc.documentElement.childNodes
document.write(x.nodename)
document.write(": ")
document.write(x.text)
next
ايجاد محتويات مبتني بر Html براي يک سند XML
يکي از مهمترين قابليت هاي XML ، تمايز و تفکيک سندهاي Html از داده هاي مربوطه است . با استفاده از يک پارسر XML ، موجود در مرورگرها ، يک صفحه وب قادر به ايجاد محتوياتي پويا است . در اين زمينه مي توان از پتانسيل هاي جاوااسکريپت بمنظور توليد و ارائه محتويات پويا نيز استفاده کرد . در همين راستا ، امکان استفاده از ASP برا ي ايجاد محتويات پويا با تاکيد بر نقش سرويس دهنده وب نيز وجود دارد . برنامه زير ، داده هاي موجود در يک سند XML را خوانده و آنها را با فرمت Html در خروجي نمايش خواهد داد .
نمايش داده هاي موجود در يک سند XML با استفاده از جاوااسکريپت
کد:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
nodes = xmlDoc.documentElement.childNodes
to.innerText = nodes.item(0).text
from.innerText = nodes.item(1).text
header.innerText = nodes.item(2).text
body.innerText = nodes.item(3).text
دستيابي به المان ها از طريق نام
رنامه زير داده هاي موجود در يک سند XML را خوانده و آنها را با فرمت Html در خروجي نمايش خواهد داد .
دستيابي به المان ها د ر يک سند XML از طريق نام و بکمک جاوااسکريپت
کد:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
document.write(xmlDoc.getElementsByTagName("from") .item(0).text)