فضاهای نام XML

فضای نام XML یک روش برای جلوگیری از برخورد نام‌های عناصر ارائه می‌دهد.

برخورد نام‌ها

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

این مستند XML شامل اطلاعات مربوط به یک جدول خاص است:

<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> خود استفاده کرده‌اند (<h:table> و <f:table>)

با استفاده از پیشوند، دو نوع متفاوت از عناصر <table> ایجاد کرده‌ایم.

فضای نام XML - ویژگی xmlns

وقتی از پیشوند در XML استفاده می‌شود، باید پیشوند تعریف شود.نام‌فضانام‌فضاها).

در علامت شروع عنصر xmlns این ویژگی

اعلام نام‌فضا از این نحو استفاده می‌شود: xmlns:prefix="URI".

<root>
<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.codew3c.com/furniture">
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>
</root>

در مثال بالا:

اولین عنصر <table> است: xmlns این ویژگی h: پیشوند نام‌فضایی را محدود می‌کند.

دومین عنصر <table> است: xmlns این ویژگی f: پیشوند نام‌فضایی را محدود می‌کند.

اگر برای یک عنصر نام‌فضایی تعریف شده باشد، تمام زیرعناصر با همان پیشوند به همان نام‌فضا مرتبط هستند.

نام‌فضا می‌تواند در عناصر ریشه XML نیز مشخص شود:

<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="https://www.codew3c.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 است که یک رشته برای شناسایی منابع اینترنت است.مکان‌یاب منابع یکپارچه (Uniform Resource Locator،URL)، این یک نشانی از دامنه اینترنت است.

یک نوع دیگر از URI که کمتر استفاده می‌شودنام منابع یکپارچه (Uniform Resource Name،URN)

نام‌فضای پیش‌فرض (Default Namespaces)

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

لطفاً از دستور زیر استفاده کنید:

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.codew3c.com/furniture">
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>

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

XSLT زبانی است که می‌توان از آن برای تبدیل مستندات XML به فرمت‌های دیگر استفاده کرد.

این مستند XML برای تبدیل XML به HTML استفاده می‌شود.

اگر به دقت به این مستند XSL نگاه کنید، می‌بینید که بیشتر برچسب‌ها برچسب‌های HTML هستند.

برچسب‌های غیر HTML دارای پیشوند xsl هستند و توسط نام‌فضا نشان داده می‌شوند: "http://www.w3.org/1999/XSL/Transform":

نام‌فضای "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>

اگر می‌خواهید اطلاعات بیشتری در مورد XSLT بیاموزید، لطفاً به آموزش XSLT