مساحة الأسماء في 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 وقطعة أثاث واحدة:

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>

الآن، لا يوجد تضارب في الأسماء، هذا بسبب أن كلا الملفين يستخدمان أسماء مختلفة لتحديد عناصر <table> الخاصة بهما (xmlns:f="https://www.codew3c.com/furniture"> و </h:table>)。

باستخدام المقدمة، قمنا بإنشاء نوعين مختلفين من عناصر <table>.

مكانة الاسم المحدد - خاصية xmlns

عند استخدام المقدمة في XML، يجب تعريف المقدمة.النطاقاتالنطاقات).

من خلال العنصر البدءي ثاني عناصر <table> خصائص

xmlns:prefix="(Uniform Resource Identifier،استخدام بيانات التسمية التوضيحية يحدث باستخدام هذا الجملة:

".
<root>
  <h:table>
    <h:tr>
    <h:td>Apples</h:td>
  <h:td>Bananas</h:td>
</h:tr>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
  <f:table>
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
<f:length>120</f:length>
</f:table>

<f:table xmlns:f="https://www.codew3c.com/furniture">

في المثال أعلاه: ثاني عناصر <table> xmlns أول عناصر <table> f:

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 كإشارة إلى صفحات الويب الموجودة فعليًا، والتي تحتوي على معلومات عن النطاق.

محدد الموارد الموحدة (URI) محدد الموارد الموحدة(Uniform Resource Identifier،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.