021-20483015

فضای نام در xml

فضای نام در xml متدی را فراهم می آورد تا از هم نامی و تداخل بین عناصر اسناد xml جلوگیری شود.

 

تداخل نام ها

در xml نام  عناصر توسط توسعه دهنده (برنامه نویس) تعیین می شود. این مورد گاهی باعث تداخل بین نام عناصر می شود. بخصوص زمانی که بخواهیم دو سند را از اپلیکیشن های مختلف با یکدیگر میکس کنیم.


Xml زیر اطلاعات یک جدول HTML را در خود جای داده است :

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

Xml زیر اطلاعاتی را درباره یک میز ارائه می دهد (تشابه کلمه میز و جدول در انگلیسی) :

<table>
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>

اگر اجزای این دو xml با یکدیگر ترکیب شوند ، یک تداخل نام اتفاق خواهد افتاد.  هر دو حاوی یک عنصر <table> می باشند، اما عناصر محتوا و معنای متفاوتی دارند.
یک کاربر یا یک اپلیکیشن نمی داند چگونه این تفاوت را حل و فصل کند.


حل مشکل تداخل نام در xml با استفاده از پیشوند

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

<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>

در مثال بالا، هیچ تعارضی وجود ندارد چون دو عنصر <table> نامهای مختلف دارند.


ویژگی 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="https://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: را تصدیق می کند.
ویژگی xmlns در دومین عنصر <table> پیشوند f: را تصدیق می کند.
هنگامی که یک فضای نام برای یک عنصر تعریف می شود، همه عناصر نسل بعد با پیشوند یکسان، با همان فضای نام در ارتباط خواهد بود.
همچنین می توان فضای نام را در عنصر ریشه xml تعریف کرد :

<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="https://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)

شناسه منبع یکسان (URI) یک رشته از کاراکترهایی است که یک منبع اینترنتی را شناسایی می کند.
شایع ترین URI نوع شناسه محل منبع (URL)  است كه آدرس دامنه اینترنتی را شناسایی می كند. یکی دیگر از نوع معمول URI  "نام منبع یکسان" (URN) است.

فضای نام های پیش فرض

تعریف فضای نام پیش فرض برای یک عنصر ما را از استفاده از پیشوند در تمام عناصر نسل بعد معاف می کند. ترکیب کد آن به شکل زیر است :

xmlns="namespaceURI"

Xml زیر اطلاعات یک جدول HTML را در خود جای داده است :

<table xmlns="http://www.w3.org/TR/html4/">
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>


Xml زیر اطلاعاتی را درباره یک میز ارائه می دهد (تشابه کلمه میز و جدول در انگلیسی) :

<table xmlns="https://www.w3schools.com/furniture">
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>

فضای نام در استفاده واقعی

XSLT یک زبان است که می تواند برای تبدیل اسناد XML به فرمت های دیگر مورد استفاده قرار گیرد.
سند XML زیر، یک سند است که برای تبدیل XML به HTML استفاده می شود.
فضای نام http://www.w3.org/1999/XSL/Transform عناصر XSLT را در داخل سند HTML شناسایی می کند :

<?xml version="1.0" encoding="UTF-8"?>
<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>

نظر شما

لطفا نام و نام خانوادگی خود را وارد کنید
لطفا ایمیل خود را وارد کنید لطفا ایمیل صحیح وارد کنید.
لطفا متن نظر خود را وارد کنید
>

مقالات و دروس

به خبرنامه مدرسه طراحی وب ایران (وب مهراز) بپیوندید.

لطفا شماره همراه صحیح وارد کنید.
لطفا ایمیل صحیح وارد کنید.

مقالات مرتبط