خلاصه آموزش XML

بخش آموزش XML به پایان رسیده است . در این بخش به صورت خلاصه و تیتر وار مهمترین مطالب آموزشی این بخش را مرور می کنیم .

XML برای تبدیل ، انتقال و نگهداری اطلاعات به کار می رود و نه برای نمایش آنها .
اسناد XML دارای ساختار درختی هستند که عناصر در آن از عنصر ریشه یا root شروع شده و سپس به عناصر فرزند در رده های پایینتر می رسند .
XML دارای ساختار دستور ( Syntax ) ساده ای است . می توانید اسناد XML را با روش DTD اعتبار سنجی کنید . یک سند مناسب XML سندی است که دارای ساختار صحیح باشد .
تمامی مرورگرهای مطرح دارای مفسر درون ساخته XML هستند که می توانند فایل های XML را خوانده و استفاده نمایند .
مدل XML DOM یک روش استاندارد برای دسترسی و کار با اشیای درون اسناد XML را فراهم می کند .
شی XMLHttpRequest ، برای ارتباط پشت صحنه بین سرور و مرورگر پس از لود شدن کامل صفحه استفاده می شود .
XML Namespaces متدی جهت جلوگیری از تداخل نام ها و تگ ها در اسناد XML ارائه می دهد .

پس از اینکه نحوه کار با XML را فرا گرفتید ، می توانید امور زیر را انجام دهید :

برنامه های به زبان های RSS , SOAP یا RDF و ... بنویسید .
اطلاعات دارای ساختار درختی و سلسله مراتبی را در فایل ها مرتب کرده و آنها را نگهداری یا انتقال دهید .
می توانید زبان های DTD ، XML DOM و XSLT را بخوانید .

 

دنبال کردن این مطلب

سایر تکنولوژی های XML

در این بخش به معرفی زبان ها و تکنولوژی هایی که در حیطه وب ، بر مبنای XML ساخته شده است ، می پردازیم .
برخی از این تکنولوژی ها را در سایت خودمان آموزش داده ایم ، مثل RSS .
لیست این تکنولوژی ها به همراه توضیح مختصری راجع به آنها در ادامه آمده است . برای دریافت اطلاعات بیشتر راجع به موضوعات لینک شده ، بر روی آنها کلیک نمایید :

( XHTML ( Extensible HTML : نسخه ای از HTML با معنای HTML قابل توسعه ، که ورژنی دقیق تر و بهتر از HTML 4 را ارائه می کرد ، ولی در نهایت کنار گذاشته شده و جای خود را به HTML 5 داد .
( XML DOM ( XML Document Object Model : به معنای مدل دسترسی به اشیای سند XML ، که روش استاندارد برای دسترسی به اجزای درونی یک سند XML و خواص و فرزندان آن می باشد .
( XSL ( Extensible Style Sheet Language : به معنای زبان قالب بندی قابل توسعه . که زبان استاندارد برای قالب بندی و فرمت دهی به فایل های XML است .
( XQuery ( XML Query Language : به معنای زبان جستجو XML . یک زبان داده ای ، بر مبنای XML می باشد که برای جستجو در بین اطلاعات یک فایل XML به کار می رود .
( DTD ( Document Type Definition : یک راه حل و استندارد برای تعیین المنت های اصلی در یک سند XML .
( XLink ( XML Linking Language : زبانی برای ایجاد لینک HyperLink در اسناد XML .
( XPointer ( XML Pointer Language : این زبان این امکان را به لینک ها ( Hyperlinks ) در اسناد XML می دهد ، که بیش از یک نقطه یا بخش در صفحه اشاره کنند .
( SOAP ( Simple Object Access Protocol : به معنای پروتکل ساده برای دسترسی به اشیا .
این تکنولوژی که یک زبان بر پایه XML است ، به نرم افزارهای مختلف این امکان را می دهد تا اطلاعات خود را از طریق HTTP مبادله نمایند .
( WSDL ( Web Services Description Language : به مبنای زبان تشریح وب سرویس ها .
یک زبان بر پایه XML که برای تشریح و توضیح وب سرویس ها به کار می رود .
( RDF ( Resource Description Framework : به معنای زبان تشریح منابع وب .
از این زبان که بر مبنای XML است ، برای تشریح و توضیح منابع وب استفاده می شود .
( RSS ( Really Simple Syndication : به معنای روش ساده مبادله اطلاعات .
یک زبان و تکنولوژی جدید بر پایه XML ، که برای انتقال و اشتراک گذاری اخبار و اطلاعات بین وب سایت های مختلف به کار می رود .

 

دنبال کردن این مطلب

استفاده از مدل XML DOM پیشرفته

ر این بخش به معرفی سایر متدهای پرکاربرد و مهم این مدل خواهیم پرداخت . در تمام مثال های این بخش از فایل books.xml استفاده شده است . برای مشاهده اطلاعات آن ، بر روی لینک فایل کلیک نمایید .

خواندن مقدار یک المنت در فایل XML :

کد مثال زیر ، مقدار متن ( text ) ، اولین عنصر <title> را خوانده و بر می گرداند .

txt = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue ;

خواندن مقدار یک خاصیت یک المنت در XML :

کد مثال زیر ، مقدار متن خاصیت " lang " ، متعلق به اولین عنصر <title> را بر می گرداند . .

txt = xmlDoc.getElementsByTagName("title")[0].getAttribute( " lang " ) ;

تغییر مقدار یک المنت به یک مقدار جدید :

کد مثال زیر ، مقدار متن اولین عنصر <title> را به مقدار تعیین شده ، تغییر می دهد :

x = xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.nodeValue = " Easy Cooking " ;

ایجاد یک خاصیت جدید برای یک المنت در فایل XML :

متد ( ) setAttribute ، می تواند برای تغییر مقدار یک خاصیت موجود در یک المنت و یا ایجاد یک خاصیت جدید ، برای آن به کار برود .
کد مثال زیر یک خاصیت جدید با مقدار تعیین شده به نام ( edition = " first " ) را به هر عنصر <book> موجود در فایل XML ، اضافه می کند :

x=xmlDoc.getElementsByTagName("book");

for( i=0 ; i < x.length ; i++ )
{
x [ i ].setAttribute( " edition " , " first " ) ;
}

ایجاد یک المنت جدید در فایل XML :

برای ایجاد یک المنت یا عنصر جدید در یک فایل XML ، چندین متد داریم که عبارتند از :
برای ایجاد یک المنت جدید از متد ( ) createElement استفاده می شود .
برای ایجاد یک گره متنی جدید از متد ( ) createTextNode استفاده می شود .
همچنین متد ( ) appendChild ، یک عنصر فرزند جدید را به عنصر جاری اضافه می کند ( پس از آخرین عنصر فرزند ) .
برای ایجاد یک عنصر جدید که حاوی متن ( text ) باشد ، ابتدا بایستی یک المنت جدید ساخت . سپس یک المنت متن را جدید و در آخر آن دو را به هم پیوند زد .
کد مثال زیر یک المنت جدید به نام ( <edition> ) را با مقدار متن ( text ) برابر با first ایجاد کرده و آن را به لاولین عنصر <book> اضافه می کند .

 

دنبال کردن این مطلب

Encoding فایل ها در XML

فایل های XML می توانند شامل کاراکترهای غیر اسکی ( کاراکترهای غیر ASCII ) مثل کاراکترهای زبان فرانسه ، عربی و ... باشند . وجود این کاراکتراها باعث ایجاد error در هنگام پردازش این فایل ها می شود .
برای جلوگیری از بروز این خطاها ، متد Encoding فایل XML خود را به صورت صریح در ابتدای سند تعیین کرده و یا آن را با فرمت Unicode ذخیره نمایید .
* Unicode : همانطور که می دانید Unicode فرمتی است که شامل تمام کاراکترهای زبان های استاندارد دنیا بوده و از همه آنها از جمله فارسی پشتیبانی می کند .

در هنگام خواندن و پردازش فایل های XML ، دو گونه ایراد و خطا براساس روش Encoding ممکن است ، رخ دهد . این خطا ها عبارتند از :

An invalid character was found in text content :
یک کاراکتر نا معتبر در متن فایل پیدا شده است .
این خطا زمانی رخ می دهد که یک کاراکتر غیر اسکی در فایل XML وجود داشته و فایل با Encoding متناسب با آن ذخیره نشده باشد .
Switch from current encoding to specified encoding not supported. :
تغییر از این حالت Encoding به Encoding تعیین شده ممکن نیست .
این خطا زمانی رخ می دهد که مثلا فایل XML شما با یک Encoding با فرمت single-byte طراحی شده باشد ، ولی با یک Encoding با فرمت double-byte دخیره شود و یا بر عکس .

 

دنبال کردن این مطلب

Namespaces ها در XML

از Namespaces در XML ، برای جلوگیری از تداخل و شباهت اسمی تگ ها استفاده می شود .
همانطور که در بخش های قبلی با ساختار کد نویسی XML آشنا شدید ، مشاهده کردید که تگ های XML هیچ کدام از قبل تعریف شده نیستند و کاربر بنا بر سلیقه خود ، تگ های مورد نیازش را تعیین می کند .
بنابراین هر کاربر اسم های دلخواه و متفاوتی را برای تگ های خود در نظر می گیرد . حال زمانی که بخواهید فرضا دو سند XML را با هم ترکیب نمایید ، ممکن است تگ هایی با اسم مشابه در آنها وجود داشته باشد . در این حالت تداخل و مشابهت اسمی به وجود آمده و برنامه در اجرای فایل XML دچار مشکل می شود .
برای مثال دو سند XML زیر را در نظر بگیرید . سند اول حاوی تگی به نام < table > همانند یک عنصر جدول در HTML و سند دوم شامل تگ < table > به عنوان میز و بخشی از اثاثیه خانه می باشد .
در صورتی که این دو سند را با هم ترکیب نماییم ، یک مشابهت اسمی بین تگ ها به وجود می آید و دارای 2 تگ < table > خواهیم بود . در این حالت برنامه نمی تواند فرق آنها را تشخیص داده و دچار مشکل می شود .
راه حل این مسئله ، استفاده از Namespaces ها است ، در ادامه به بررسی آن خواهیم پرداخت .

<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>

مشکل مشابهت و تداخل اسمی در XML به راحتی با قرار دادن یک پیشوند حرفی ( Prefix ) در ابتدای نام تگ ها ، حل خواهد شد .
مثلا اگر دو تگ با نام مشابه < table > داریم ، به ابتدای یکی پیشوند :f و دیگری پیشوند :h اضافه می کنیم .

<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>

<f:table>
<f:name>African Coffee Table</f:name>
<f:width>70</f:width>
<f:length>120</f:length>
</f:table>

 

دنبال کردن این مطلب

ساخت یک برنامه کاربردی با XML

در این بخش قصد داریم تا با ارایه یک مثال عملی ، نحوه استفاده از XML در عمل و ساخت یک برنامه کاربردی را نشان دهیم .
در این مثال ، یک فایل XML داریم که اطلاعات مربوط به چند آهنگ را در خود نگهداری می کند . اسکریپتی نوشته شده که به وسیله دو دکمه فرمان بعدی و قبلی ، بین آهنگ ها حرکت کرده و با هر بار زدن یک دکمه فرمان ، اطلاعات آهنگ قبلی یا بعدی نشان داده می شود .
این مثال را به صورت گام به گام نمایش داده و تشریح می کنیم .

کد اسکریپت و برنامه :

جدول زیر ، کد فایل HTML و اسکریپت طراحی شده در آن را نمایش می دهد . همچنین خروجی واقعی مثال نیز ، نشان داده شده است . کد مثال را مرور نموده و به آن دقت نمایید . سپس در پایان مثال به تشریح نکات مهم آن می پردازیم :

<!DOCTYPE html>
<html>
<head>

<script>
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari // برای تبادل اطلاعات ajax ساخت یک شی
xmlhttp = new XMLHttpRequest();
}

xmlhttp.open("GET", "cd_catalog.xml", false); // و خواندن اطلاعات آت XML باز کردن فایل
xmlhttp.send(); // ارسال درخواست به سرور
xmlDoc = xmlhttp.responseXML; // ذخیره پاسخ سرور در یک متغیر دلخواه

x = xmlDoc.getElementsByTagName("CD"); // و ذخیره آن CD خواندن اطلاعات المنت
i = 0; // تعیین شمارشگر برنامه

function displayCD() { // انتخاب شده و نمایش آن CD تابع خواندن اطلاعات
artist = (x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue); // نمایش اطلاعات خواننده آهنگ
title = (x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue); // نمایش عنوان آهنگ
year = (x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue); // نمایش سال انتشار
txt = "Artist: " + artist + "<br>Title: " + title + "<br>Year: " + year; // ریختن تمام اطلاعات آهنگ در یک متغیر
document.getElementById("showCD").innerHTML = txt; // صفحه جهت نمایشdiv ریختن اطلاعات متغیر بالا در عنصر
}

function next( ) { // تابع رفتن به آهنگ بعدی
if (i < x.length - 1) {
i++;
displayCD( );
}
}

function previous( ) { // تابع رفتن به آهنگ قبلی
if (i > 0) {
i--;
displayCD( );
}
}
</script>
</head>
<body onload="displayCD( )">

<div id='showCD'></div><br>
<input type="button" onclick="previous( )" value="<<" />
<input type="button" onclick="next( )" value=">>" />

</body>
</html>

نکات کد فایل HTML :

در تگ body تابع ( ) displayCD فراخوانی شده ، تا در هنگام لود صفحه اطلاعات اولین آهنگ فایل XML به صورت پیش فرض نمایش داده شود .
تگ div ، اطلاعات آهنگ انتخاب شده در هر لحظه را نمایش می دهد .
دو دکمه فرمان برای انجام عملیات حرکت بین آهنگ ها به کار می روند .

 

دنبال کردن این مطلب

مفسر XML در جاوا اسکریپت

در بخش های قبلی با نحوه تعریف و ساختار دستوری فایل های XML آشنا شدید . در این بخش می خواهیم شما را با مفسر یا تجزیه کننده یک فایل XML آشنا سازیم .
در یک صفحه HTML ، به فرض اگر بخواهید به یک تگ یا عنصر خاص دسترسی داشته باشید ، از مدل DOM استفاده می کنید . در این مدل ، عنصر یا تگ مورد نظر بر حسب id یا مثلا عنصر مادر Parent آن ، در صفحه شناسایی شده و فراخوانی می شود .
حال اگر بخواهید همین کار را در یک فایل XML انجام دهید ، چه ؟
به عبارت دیگر اگر بخواهید به یک عنصر با المنت در فایل XML دسترسی داشته باشید ، چه باید بکنید .
برای این منظور در مرحله اول باید فایل XML را توسط مفسر یا تجزیه کننده جاوا اسکریپت آن ، به اجزای سازنده اشن ، تجزیه کنید . سپس به وسیله متدهای XML DOM به عنصر مورد نظر رسید .
تمامی مرورگرها ، دارای مفسر درون ساخته ای برای تجزیه فایل های XML هستند .

برای رعایت مسایل امنیتی ، مرورگرهای جدید امکان دسترسی به یک فایل XML که بر روی سرور دیگری از سرور جاری قرار دارد ، را نمی دهد .
به عبارت دیگر ، برای اجرای دستورات فوق ، باید صفحه درخواست کننده فایل XML و هم خود فایل XML ، هر دو بر روی یک سرور باشند .

دنبال کردن این مطلب

شی XMLHttpRequest

از شی XMLHttpRequest در XML برای انتقال و جا به جایی اطلاعات بین سرور و کامپیوترکاربر رد پشت صفحه استفاده می شود .
قبل از بوجود آمدن شی XMLHttpRequest در XML هنگامی که مثلا در یک صفحه Asp یا PHP می خواهیم اطلاعاتی را به سرور ارسال نماییم بایستی کل صفحه به سرور ارسال می شد . این عمل باعث Submit شدن کل صفحه به صفحه و لود شدن مجدد آن می شود که چند اشکال دارد :

حجم کل اطلاعات صفحه فقط به خاطر تغییر بخشی کوچکتر از آن می بایست به سرور ارسال می شد که هم وقت و هم پهنای باند بیشتری می گرفت .
کل صفحه به سرور فرستاده شده و برای اجرای مجدد می بایست از اول لود می شد که نیازمند انتظار کاربر و کار بیشتر کامپیوتر می شد .
بنابر این برای حل این مشکل شی XMLHttpRequest در XML ساخته شد . این شی فقط بخشی از صفحه که تغییر کرده و یا باید به روز شود را به سرور ارسال نموده و پاسخ آن را نیز از سرور دریافت می کند . سپس لود مجدد صفحه تغییرات را در صفحه اعمال می کند .
شی XMLHttpRequest در XML برای برنامه نویسان وب همانند یک رویا بود زیرا :
1) محتویات صفحه را به روز می کند بدون اینکه کل صفحه مجددا فراخوانی شود .
2) می تواند بعد از اینکه صفحه لود شد درخواست اطلاعات از سرور نماید .
3) می تواند بعد از اینکه صفحه لود شد از سرور اطلاعات دریافت نماید .
4) عملیات انتقال داده بر سرور را در پشت صحنه صفحه و بدون اطلاع کاربر انجام دهد .

تمامی مرورگرهای جدید شی XMLHttpRequest در XML را بصورت پیش فرض درون خود دارند از آن پشتیبانی می کنند .
دستور کلی ساخت یک شی XMLHttpRequest در XML بصورت زیر است :

نام یک متغیر = new XMLHttpRequest( );
مثال : xmlhttp = new XMLHttpRequest( );

دنبال کردن این مطلب

قالب بندی فایل های XML با CSS

همانطور که در بخش های قبل توضیح دادیم ، فایل های XML برای نگهداری و انتقال اطلاعات استفاده شده و خود دارای ویژگی ها یا امکاناتی برای نمایش اطلاعات نیستند .
مرورگرها نیز فایل های XML را به صورت متن ساده و بدون قالب بندی خاص نمایش می دهند .
اما ممکن است شما تمایل داشته باشید تا فایل های XML خود را با ظاهر و قالب بندی خاص نمایش دهید . در این حالت می توانید از یک فایل CSS ، همانگونه که در HTML استفاده می کردیم ، استفاده نمایید .
در این بخش قصد داریم تا نحوه این کار را به شما آموزش دهیم .

اتصال یک فایل CSS به سند XML :

برای قالب بندی فایل XML توسط CSS ، ابتدا باید فایل XML را به فایل CSS متصل نمایید . برای این منظور از یگ تگ < ?xml > شامل آدرس فایل CSS مورد نظر ، در ابتدای سند XML استفاده می شود

کد فایل CSS مورد استفاده :

در جدول زیر کدی فایل CSS ای که برای قالب بندی سند XML خود به کار برده ایم را نمایش داده ایم . به آن دقت نمایید :

CATALOG
{
background-color: #ffffff;
width: 100%;
}
BOOK
{
display: block;
margin-bottom: 30pt;
margin-left: 0;
}
TITLE
{
color: #FF0000;
font-size: 20pt;
}
AUTHER
{
color: #0000FF;
font-size: 20pt;
}
PRICE,YEAR,COMPANY
{
display: block;
color: #000000;
margin-left: 20pt;
}

پس از اینکه فایل CSS را به سند XML متصل کردید ، فایل CSS آن را قالب بندی کرده و با استایل جدید نمایش می دهد . مرورگر فایل XML را به جای نمایش ساده ، با قالب CSS نشان می دهد .

 

دنبال کردن این مطلب

مشاهده فایل های XML

فایل های XML در تمام مرورگرهای استاندارد ، قابل مشاهده هستند . کد زیر یک فایل ساده XML را نشان می دهد . برای مشاهده آن در مرورگر بر روی گزینه مشاهده فایل XML کلیک نمایید :
نکته : همانطور که قبلا اشاره کردیم و می دانید ، فایل های XML خروجی مثل فایل های HTML بر روی صفحه ندارند و فقط برای انتقال و نگهداری اطلاعات استفاده می شوند .

<note>
<to>Hamed</to>
<from>Ali</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

مثلا نام تگ ها را به رنگ قرمز و رنگ متن ها را مشکی نشان می دهند . این کار برای خوانایی و درک بهتر کدها صورت می گیرد .
همچنین علامت های ( + ) و ( - ) در کنار تگ ها و المنت هایی که دارای عنصر فرزند هستند ، قرار می گیرند ، که به وسیله آنها می توانید تگ را باز کرده و یا ببندید .
برای مشاهده فایل XML بدون علامت های ( + ) و ( - ) ، بر روی صفحه در مرورگر کلیک سمت راست کرده و گزینه " View Page Source " را انتخاب نمایید .

 

دنبال کردن این مطلب