آموزش XML-فضاهای نام
فضای نام (Namespace) در XML متدی را ارائه میدهد که از تداخل نامها جلوگیری میکند.
تداخل نامها
در XML، نام عناصر توسط توسعه دهنده آن مشخص میشود. معمولا در نتیجه این کار، زمانی که دو سند XML از برنامههای مختلف را کنار هم قرار دهیم تداخل به وجود میآید.
این XML دارای اطلاعاتی از یک جدول HTML است:
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
این XML دارای اطلاعات دیگری از جدول دیگر است (قسمتی از وسایل خانگی):
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
اگر اجزای این XML ها در کنار یکدیگر قرار داده شوند، یک تداخل نام صورت میگیرد. هر دو شامل یک عنصر <table> هستند اما این عناصر دارای مقدار و معنی متفاوتی هستند.
یک کاربر یا یک نرمافزار XML نمیداند چگونه این تفاوت را تشخیص دهد و به آن رسیدگی کند.
راه حل مشگل تداخل نام استفاده از یک پیشوند است
تداخل نامها در XML با استفاده از یک پیشوند به راحتی حل میشود.
این XML دارای اطلاعات یک جدول HTML است, اطلاعاتی درباره قسمتی از وسایل خانگی:
<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>80</f:width>
<f:length>120</f:length>
</f:table>
در مثال بالا هیچ تداخلی وجود نخواهد داشت زیرا دو عنصر <table> دو نام متفاوت دارند.
Namespace یا فضاهای نام در XML - صفت یا ویژگی xmlns
زمانی که از پیشوندها در XML استفاده میکنیم، به اصطلاح یک فضای نام باید برای این پیشوند تعریف کنیم.
این فضای نام توسط یک صفت xmlns در تگ آغازین یک عنصر تعریف میشود.
اعلام این فضای نام ساختاری به شکل زیر دارد:
" xmlns:prefix="URI
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table xmlns:f="http://www.w3schools.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
در مثال بالا، صفت xmlns در تگ <table> با اضافه کردن پیشوندهای h: و f: آن را به یک فضای نام تبدیل می کند.
زمانی که یک فضای نام برای یک عنصر تعریف میشود، تمام عناصر فرزند که پیشوند مشابهی دارند دارای یک فضای نام مشابه نیز میشوند.
فضای نام میتواند در جایی که یک عنصر تعریف شده است اعلام شود، همچنین میتواند در ریشه آن عنصر نیز اعلام شود:
xmlns:f="http://www.w3schools.com/furniture">
<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>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
نکته: محتویات آدرس (URI) فضای نامها توسط تجزیه کنندهها بررسی نمیشوند. یعنی آدرسی که در فضاهای نام نوشته شده است هیچ کاربردی ندارد.
هدف، دادن یک نام منحصر به فرد به فضای نام است. اما، اغلب شرکتها برای اشاره به آدرس سایت شان از آن برای فضای نامها استفاده میکنند.
URI چیست؟
URI سرنام واژگان Uniform Resource Identifier بحساب می آید و بمعنی شناسه منبع یکپارچه است.
در واقع URI یک رشته از کاراکتر هاست که برای شناسایی یک نام و یا یک منبع بر روی اینترنت مورد استفاده قرار می گیرد.
URI، خود شامل دو قسمت است:
- URL: سرنام واژگان Uniform Resource Locator است که برای شناسایی آدرس های دامینی روی اینترنت استفاده می شود.
- URN: سرنام واژگان Universal Resource Name است و مشخصه ای است که بصورت یکتا یک منبع را نام گذاری می کند و هیچ جزئیاتی در مورد چگونگی دسترسی به آن منبع به ما نمی دهد.
در واقع URN شبیه به نام یک مکان است، در حالی که یک URL آدرس رسیدن به آن مکان است.
در مثالهای این اموزش فقط از URL ها استفاده شده است.
فضاهای نام پیشفرض
با تعریف یک فضای نام پیشفرض دیگر نیازی نیست که برای تمام عناصر فرزند از پیشوند استفاده کنیم. در زیر با نحوهی تعریف این فضای نام پیشفرض آشنا میشوید:
این XML دارای اطلاعاتی در مورد یک جدول HTML است:
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
این XML دارای اطلاعاتی درباره قسمتی از وسایل خانگی است:
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
استفاده واقعی از فضاهای نام
XSLT یک زبان مرتبط با XML است که از آن برای تبدیل اسناد XML به فرمتهای دیگر مثل HTML میتوان استفاده کرد.
مشاهده میکنید که در سند XSLT زیر بیشتر تگها، همان تگهای HTML هستند.
این تگ ها تگهای HTML نیستند. این تگها پیشوند XSL دارند که توسط فضاینام شناسایی شدهاند:
"xmlns:xsl="http://www.w3.org/1999/XSL/Transform
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr>
<th style="text-align:left">Title</th>
<th style="text-align:left">Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
برای کسب اطلاعات بیشتر در مورد XSLT به لینک روبرو مراجعه فرمایید: XSLT Tutorial
- نوشته شده توسط میلاد نظری
- بازدید: 11026