XML Пространства имен
Пространства имен XML предоставляют способ избежать конфликтов имен элементов.
Конфликты имен
В XML имена элементов определяются разработчиками. Когда два разных документа используют одно и то же имя элемента, возникают конфликты имён.
Этот XML содержит информацию об HTML-таблице:
<tr>
<td>Яблоки</td>
<td>Бананы</td>
</tr>
</table>
Этот XML-документ содержит информацию о столе (предмете мебели):
<name>Африканский журнальный столик</name>
<width>80</width>
<length>120</length>
</table>
Если эти два XML-документа используются, возникнут конфликты имён, потому что оба документа содержат элементы <table> с разными и.
XML-парсеры не могут определить, как обрабатывать этот тип конфликта.
Использование префиксов для предотвращения конфликтов имён
Конфликтов имён в XML можно легко избежать, используя префиксы имён.
Этот XML содержит информацию о HTML-таблице и предмете мебели:
<h:tr>
<h:td>Яблоки</h:td>
<h:td>Бананы</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>Африканский журнальный столик</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
В приведённом выше примере конфликта нет, потому что два элемента <table> имеют разные имена.
Пространства имён XML - атрибут xmlns
При использовании префиксов в XML необходимо определить так называемоепространство имёндля префикса.
Пространство имён определяется ватрибуте xmlnsоткрывающего тега элемента.
Синтаксис объявления пространства имён следующий. xmlns:префикс="URI"。
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Яблоки</h:td>
<h:td>Бананы</h:td>
</h:tr>
</h:table>
<f:table xmlns:f="http://www.w3cschool.cc/furniture">
<f:name>Африканский журнальный столик</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
В приведённом выше примере атрибут xmlns тега <table> определяет квалифицированное пространство имён для префиксов h: и f:.
Когда пространство имён определяется в открывающем теге элемента, все дочерние элементы с тем же префиксом будут связаны с тем же пространством имён.
Пространства имён можно объявлять в элементах, где они используются, или в корневом элементе XML:
xmlns:f="http://www.w3cschool.cc/furniture">
<h:table>
<h:tr>
<h:td>Яблоки</h:td>
<h:td>Бананы</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>Африканский журнальный столик</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
Примечание:URI пространства имен не используется парсером для поиска информации.
Его цель — дать пространству имен уникальное имя. Однако многие компании часто используют пространство имен как указатель на фактическую веб-страницу, содержащую информацию о пространстве имен.
Пожалуйста, посетитеhttp://www.w3.org/TR/html4/。
Универсальный идентификатор ресурса (URI, полное название: универсальный идентификатор ресурса)
Универсальный идентификатор ресурса(URI) — это строка символов, которая может идентифицировать интернет-ресурсы.
Наиболее часто используемый URI — это тот, который используется для идентификации адресов доменных имен в Интернете,универсальный локатор ресурсов(URL). Другой, менее часто используемый URI — этоуниверсальное имя ресурса(URN)。
В наших примерах мы используем только URL.
Пространства имен по умолчанию
Определение пространства имен по умолчанию для элемента избавляет нас от необходимости использовать префиксы во всех дочерних элементах. Его синтаксис таков:
Этот XML содержит информацию об HTML-таблице:
<tr>
<td>Яблоки</td>
<td>Бананы</td>
</tr>
</table>
Этот XML содержит информацию о предмете мебели:
<name>Африканский журнальный столик</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>Моя коллекция CD</h2>
<table border="1">
<tr>
</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.
Другие расширения