上一节:
下一节:

  XML 命名空间

  • 定义和使用

    XML 命名空间提供了一种避免元素名称冲突的方法。
    XML 中,元素名由开发人员定义。当尝试混合来自不同 XML 应用程序的 XML 文档时,这通常会导致冲突。
    XML 包含 HTML 表信息:
    <table>
        <tr>
            <td>Apples</td>
            <td>Bananas</td>
        </tr>
    </table>
    
    
    XML 包含有关表(家具)的信息:
    <table>
        <name>非洲咖啡桌</name>
        <width>80</width>
        <length>120</length>
    </table>
    
    
    如果将这些 XML 片段添加在一起,则会出现名称冲突。两者都包含一个<table>元素,但是这些元素有不同的内容和含义。
    用户或 XML 应用程序将不知道如何处理这些差异。
  • 使用前缀解决名称冲突

    使用名称前缀很容易避免 XML 中的名称冲突。
    XML 包含有关 HTML 表和一件家具的信息:
    <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>
    
    
    在上面的例子中,不会有冲突,因为两个<table>元素有不同的名称。
  • xmlns属性

    XML 中使用前缀时,必须定义前缀的命名空间。
    命名空间可以由元素的开始标记中的 xmlns 属性定义。
    命名空间声明具有以下语法;xmlns:prefix=“URI”。
    <root>
       <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="https://www.w3schools.com/furniture">
           <f:name>非洲咖啡桌</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.w3schools.com/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来查找信息。
    使用URI的目的是给命名空间一个唯一的名称。
    然而,公司经常使用名称空间作为指向包含名称空间信息的网页的指针。
  • 统一资源标识符(URI)

    统一资源标识符(URI)是标识 Internet 资源的字符串。
    最常见的 URI 是统一资源定位器(URL),用于标识 Internet 域地址。另一种并不常见的URI类型是统一资源名(Uniform Resource Name,URN)。
  • 默认命名空间

    为元素定义默认命名空间可以避免在所有子元素中使用前缀。它有以下语法:
    xmlns="namespaceURI"
    
    
    此 XML 包含 HTML 表信息:
    <table xmlns="http://www.w3.org/TR/html4/">
        <tr>
            <td>苹果</td>
            <td>香蕉</td>
        </tr>
    </table>
    
    
    此XML包含有关一件家具的信息:
    <table xmlns="https://www.w3schools.com/furniture">
        <name>非洲咖啡桌</name>
        <width>80</width>
        <length>120</length>
    </table>
    
    
  • 实际使用的命名空间

    XSLT 是一种可用于将 XML 文档转换为其他格式的语言。
    下面的 XML 文档是一个用于将 XML 转换为 HTML 的文档。
    名称空间 “http://www.w3.org/1999/XSL/Transform” 标识 HTML 文档中的 XSLT 元素:
    <?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>我的CD收藏</h2>
                    <table border="1">
                    <tr>
                        <th style="text-align:left">标题</th>
                        <th style="text-align:left">艺术家</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教程
上一节:
下一节: