• 国家国际发展合作署举行揭牌仪式 2018-04-21
  • 春潮涌动,千余青少年相约科技馆 2018-04-21
  • 英俄用“关闭电视台”互相威胁 双边关系雪上加霜 2018-04-21
  • 拔不拔赖清德?蔡英文何去何从 2018-04-21
  • 我国阅读指数首次发布 人均纸书阅读量为4.66本 2018-04-20
  • 《夏目的美丽日记》绿色度测评报告 2018-04-20
  • 只要打动人心,文艺片也可以很好看 2018-04-19
  • 《荒城纪》揭幕北京大学生电影节 2018-04-19
  • 贵州桐梓:困难群众打工差点错过“移民搬迁”之后 2018-04-19
  • 《英雄联盟》2018年季中冠军赛入围赛抽签将4月24日举行 2018-04-19
  • 全国最美志愿者黄梅生:孤儿的“校长爸爸” 2018-04-19
  • 《荒城纪》揭幕北京大学生电影节 2018-04-18
  • 贵州桐梓:困难群众打工差点错过“移民搬迁”之后 2018-04-18
  • 老布什夫人芭芭拉放弃治疗,余生将在家中“颐养” 2018-04-18
  • 音乐剧《朝暮有情人》演绎港穗两地三代情 2018-04-18
  • 【xml教程】XML 命名空间

    栏目: XML 发布于: 2014-11-27 13:23:15

    XML 命名空间


    XML 命名空间提供避免元素命名冲突的方法。


    命名冲突

    在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。

    这个 XML 携带 HTML 表格的信息:

    <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> 元素有不同的名称。


    XML 命名空间 - xmlns 属性

    当在 XML 中使用前缀时,一个所谓的用于前缀的命名空间必须被定义。

    命名空间是在元素的开始标签的 xmlns 属性中定义的。

    命名空间声明的语法如下。xmlns:前缀="URI"。

    <root>

    <h:table xmlns:h="http://www.rocksun.cn/TR/html4/">
    <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
    </h:tr>
    </h:table>

    <f:table xmlns:f="http://www.rocksun.cn/furniture">
    <f:name>African Coffee Table</f:name>
    <f:width>80</f:width>
    <f:length>120</f:length>
    </f:table>

    </root>

    在上面的实例中,<table> 标签的 xmlns 属性定义了 h: 和 f: 前缀的合格命名空间。

    当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。

    命名空间,可以在他们被使用的元素中或者在 XML 根元素中声明:

    <root xmlns:h="http://www.rocksun.cn/TR/html4/"
    xmlns:f="http://www.rocksun.cn/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 不会被解析器用于查找信息。

    其目的是赋予命名空间一个惟一的名称。不过,很多公司常?;嶙魑刚肜词褂妹占渲赶蚴导蚀嬖诘耐?,这个网页包含关于命名空间的信息。

    请访问 http://www.rocksun.cn/TR/html4/。


    统一资源标识符(URI,全称 Uniform Resource Identifier)

    统一资源标识符(URI)是一串可以标识因特网资源的字符。

    最常用的 URI 是用来标识因特网域名地址的统一资源定位器(URL)。另一个不那么常用的 URI 是统一资源命名(URN)。

    在我们的实例中,我们仅使用 URL。


    默认的命名空间

    为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。它的语法如下:

    xmlns="namespaceURI"

    这个 XML 携带 HTML 表格的信息:

    <table xmlns="http://www.rocksun.cn/TR/html4/">
    <tr>
    <td>Apples</td>
    <td>Bananas</td>
    </tr>
    </table>

    这个XML携带有关一件家具的信息:

    <table xmlns="http://www.rocksun.cn/furniture">
    <name>African Coffee Table</name>
    <width>80</width>
    <length>120</length>
    </table>


    实际使用中的命名空间

    XSLT 是一种用于把 XML 文档转换为其他格式的 XML 语言,比如 HTML。

    在下面的 XSLT 文档中,您可以看到,大多数的标签是 HTML 标签。

    非 HTML 的标签都有前缀 xsl,并由此命名空间标识:xmlns:xsl="http://www.rocksun.cn/1999/XSL/Transform":

    <?xml version="1.0" encoding="ISO-8859-1"?>

    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.rocksun.cn/1999/XSL/Transform">

    <xsl:template match="/">
    <html>
    <body>
    <h2>My CD Collection</h2>
    <table border="1">
    <tr>
    <th align="left">Title</th>
    <th 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 教程。



    本文转载自:w3cschool
    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:【xml教程】XML 命名空间
    IT技术书籍推荐:
    算法导论(原书第3版)
    算法导论(原书第3版)
    Thomas H.Cormen (作者), Charles E.Leiserson (作者), Ronald L.Rivest (作者), Clifford Stein (作者), 殷建平 (译者), 徐云 (译者), 王刚 (译者), 等 (译者)
    《算法导论(原书第3版)》内容简介:在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性?!端惴ǖ悸?原书第3版)》将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。全书选材经典、内容丰富、结构合理、逻辑清晰,对本科生的数据结构课程和研究生的算法课程都是非常实用的教材,在IT专业人员的职业生涯中,《算法导论(原书第3版)》也是一本案头必备的参考书或工程实践手册。