Пространства имен XML обеспечивают способ избежать конфликтов имен элементов.
Имя конфликты
В XML, имена элементов определяются разработчиком. Это часто приводит к конфликту при попытке смешивать XML-документы из различных приложений XML.
Этот XML несет в себе информацию таблицы HTML:
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
Этот XML несет в себе информацию о таблице (a piece of furniture) :
<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> элементы имеют разные имена.
Пространства имен XML - The xmlns Атрибут
При использовании префиксов в XML, A namespace должен быть определен для префикса.
Пространство имен может быть определено с помощью 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="http://www.w3ii.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
В приведенном выше примере:
В xmlns атрибут в первом <table> элемент дает час: префикс квалифицированных имен.
В xmlns атрибут во втором <table> элемент дает п: префикс квалифицированное имен.
Когда пространство имен определено для элемента, все дочерние элементы с одинаковым префиксом связаны с тем же пространством имен.
Пространства имен также могут быть объявлены в корневой XML-элемент:
<root
xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3ii.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>
Note: Пространство имен URI не используется анализатором для поиска информации.
Цель с помощью URI, чтобы дать пространству имен уникальное имя.
Тем не менее, компании часто используют пространство имен как указатель на веб-страницу, содержащую информацию о пространстве имен.
Унифицированный идентификатор ресурса (URI)
Uniform Resource Identifier (URI) представляет собой строку символов , которая идентифицирует интернет - ресурс.
Наиболее распространенным является URI в Uniform Resource Locator (URL) , который идентифицирует адрес домена в Интернете. Другой, не столь распространенный тип URI является Universal Resource Name (URN) .
По умолчанию 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="http://www.w3ii.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>
Если вы хотите узнать больше о XSLT, пожалуйста , прочитайте наш XSLT Учебник .