Пространства имен XML
- Предыдущая страница Атрибуты XML
- Следующая страница Отображение 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, необходимо определить префикс.Пространства именПространства имен (Namespaces)
Пространства имен могут быть определены через xmlns
атрибут для определения.
Декларация пространства имен использует такую грамматику: xmlns:префикс="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 — просто предоставить уникальное имя для пространства имен.
Однако, многие компании часто используют имена пространств в качестве указателей на существующие веб-страницы, содержащие информацию о пространстве имен.
Единый ресурсоопределяющий identifier (URI)
Единый ресурсоопределяющий identifier (Uniform Resource Identifier,URI) — это строка, которая идентифицирует ресурс Интернета.
Самый распространенный URI —Единый ресурсоопределяющий locator (Uniform Resource Locator,URL) — это адрес интернет-домена.
Другой менее распространенный тип URI —Единое имя ресурса (Uniform Resource Name,URN)。
Дефолтное имя пространства (Default Namespaces)
Определениеdefaultnamespace для элемента позволяет нам избежать использования префикса во всех подэлементах.
Используйте следующую грамматику:
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 Учебник.
- Предыдущая страница Атрибуты XML
- Следующая страница Отображение XML