• xml 总结(一)数据岛,命名空间


    一.数据岛技术

    XML数据可以以数据岛的形式嵌入HTML页面。

    XML数据可以象下面的例子那样嵌入HTML页面:

    <xml id="note">
    <note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
    </note>
    </xml>

    或者象下面这样嵌入外部单独的XML文件:

    <xml id="note" src="note.xml">
    </xml>

    注意那个<xml>标记是一个HTML元素,而不是一个XML元素。


    数据绑定

    XML数据岛可以绑定到HTML元素上(比如表格)。

    在下面的例子中,一个XML数据岛(ID=cdcat)被从外部XML文档载入。一个HTML的表格绑定到此数据岛上。HTML表格内部的span元素使用datafld属性和XML文档相应的XML元素相互绑定。

    <html>
    <body>
    <xml id="cdcat" src="cd_catalog.xml"></xml>
    <table border="1" datasrc="#cdcat">
    <tr>
    <td><span datafld="ARTIST"></span></td>
    <td><span datafld="TITLE"></span></td>
    </tr>
    </table>
    </body>
    </html> 

    把数据岛绑定到<span> 或者<div> 元素上

    <span>或<div>元素都可以用来显示XML数据。

    没有必要使用table元素来显示XML数据,数据可以通过数据岛绑定到任何一个HTML元素上。

    所要做的就是在你得页面中添加一些<span> 或者<div>元素,使用数据资源属性把每一个元素和XML文档元素绑定起来,就象下面这样:

    <br />Title:
    <span datasrc="#xmldso" datafld="TITLE"></span>
    <br />Artist:
    <span datasrc="#xmldso" datafld="ARTIST"></span>
    <br />Year:
    <span datasrc="#xmldso" datafld="YEAR"></span>

    或者象这样的形式:

    <br />Title:
    <div datasrc="#xmldso" datafld="TITLE"></div>
    <br />Artist:
    <div datasrc="#xmldso" datafld="ARTIST"></div>
    <br />Year:
    <div datasrc="#xmldso" datafld="YEAR"></div>

    注意如果你使用<div>元素,数据将会显示在新的一行里。

    上面的例子,可以看到XML数据都显示在一行里。如果要控制数据换行,就必须在你的代码里添加一些脚本程序。 

    注:cd_catalog.xml文件见附录1,

       当导入命名空间后,不能使用数据岛技术了。

    二.XML CDATA

    下面是五个在XML文档中预定义好的实体:

    &lt; < 小于号
    &gt; > 大于号
    &amp; &
    &apos; ' 单引号
    &quot; " 双引号


    实体必须以符号"&"开头,以符号";"结尾

    CDATA部件

    在CDATA内部的所有内容都会被解析器忽略。

    如果文本包含了很多的"<"字符和"&"字符——就象程序代码一样,那么最好把他们都放到CDATA部件中。

    一个 CDATA 部件以"<![CDATA[" 标记开始,以"]]>"标记结束:

    <script>
    <![CDATA[
    function matchwo(a,b)
    {
    if (a < b && a < 0) then
    {
    return 1
    }
    else
    {
    return 0
    }
    }
    ]]>
    </script>

    在前面的例子中,所有在CDATA部件之间的文本都会被解析器忽略。

    CDATA注意事项:

    CDATA部件之间不能再包含CDATA部件(不能嵌套)。如果CDATA部件包含了字符"]]>" 或者"<![CDATA[" ,将很有可能出错哦。

    同样要注意在字符串"]]>"之间没有空格或者换行符。

     三.XML NameSpace

    XML命名空间的定义由命名空间的声明、“合法名称”的定义及应用、命名空间的作用域三部分组成。

    1.XML命名空间的声明

    <学生:学生 xmlns:学生 = http://www.xml.net.cn/学生 
    xmlns:班主任 = http://www.xml.net.cn/班主任> 
    就是命名空间声明。 
    命名空间声明有两种方式,即直接定义方式和缺省定义方式: 
    直接定义方式: 
    xmlns: [命名空间前缀] = [命名空间名] 
    缺省定义方式: 
    xmlns = [命名空间名]

    命名空间声明中,等号右边的属性值部分是一个URI(Uniform Resource Identifier统一资源标识符)引用,其功能是区分不同的命名空间。因此,这个URI引用被称为命名空间名,它应该具有唯一性和持久性。虽然该属性值使用了URI,但其目的并不是要直接得到一个Schema或DTD,主要的目的在于标识特定的命名空间。

    命名空间声明中,等号左边的属性名部分,如果有用冒号“:”分隔开的“命名空间前缀”,就是直接定义方式,其中“命名空间前缀”是一个合法的XML名称。没有“命名空间前缀”的命名空间声明,就是缺省的命名空间声明。 命名空间声明将“命名空间名”与“命名空间前缀”绑定在一起。

    2. “合法名称”的定义和应用

    在定义了命名空间的声明以后,对如何引用<命名空间前缀>构成新的元素名和属性名,需要再做进一步的统一规范,这就是所谓“合法名称”定义的由来。

    “合法名称”由用西文冒号“:”分开的前缀部分和本地部分组成,其中前缀部分和本地部分都是一个合法的XML名称。如:“班主任:姓名”。

    “合法名称”的前缀部分,规定必须是一个“命名空间前缀”,且这个命名空间前缀必须已经经过命名空间声明声明过,语法分析器会自动将其与声明中的URI引用相联系。冒号后的部分是该命名空间中定义的元素或属性名,提供了“合法名称”的本地部分。在用缺省方式声明命名空间时,由于“命名空间前缀”为空,因此,这时的“合法名称”只剩下本地部分。

    “合法名称”的应用主要有三种情况: 
    用于起始元素标记、结束元素标记和空元素标记。 
    用于属性的定义。例如:

    <?xml version ="1.0" encoding = "GB2312"?> 
    <学生:学生 xmlns:学生 = http://www.xml.net.cn/学生> 
    <学生:姓名>李明</学生:姓名> 
    <学生:班级 学生:数字类型 = "中文">三年级二班</学生:班级> 
    <学生:住址 学生:数字类型 = "阿拉伯">135楼210室</学生:住址> 
    </学生:学生>

    用于DTD中的元素名和属性类型。例如:

    <?xml version="1.0" encoding="GB2312"?> 
    <!ELEMENT 学生:学生 (学生:姓名, 学生:班级,学生:住址)> 
    <!ATTLIST 学生:学生 xmlns:学生 
    CDATA #FIXED "http://www.xml.net.cn/学生"> 
    <!ELEMENT 学生:姓名 (#PCDATA)> 
    <!ELEMENT 学生:班级 (#PCDATA)> 
    <!ELEMENT 学生:住址 (#PCDATA)>

    3.命名空间的作用域

    所谓命名空间的作用域范围是指,一个命名空间声明可以作用到哪些元素和属性。一般可以认为命名空间声明,能够作用到说明它的元素和该元素的所有内容元素,除非被其他命名空间声明所覆盖。

    与XML命名空间相关的主要概念,讨论到这里基本上可以结束了。由于篇幅的关系,与XML命名空间相关的一些曾经引起争论的问题,如“命名空间与DTD”,就不在这里讨论了。XML命名空间已经在XSLT、Xlink等标准中得到应用,它已经成为XML标准家族不可或缺的一员。

    附录:

    1.cd_catalog.xml文件

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!-- Edited with XML Spy v4.2 -->
    <CATALOG>
     <CD>
      <TITLE>Empire Burlesque</TITLE>
      <ARTIST>Bob Dylan</ARTIST>
      <COUNTRY>USA</COUNTRY>
      <COMPANY>Columbia</COMPANY>
      <PRICE>10.90</PRICE>
      <YEAR>1985</YEAR>
     </CD>
     <CD>
      <TITLE>Hide your heart</TITLE>
      <ARTIST>Bonnie Tyler</ARTIST>
      <COUNTRY>UK</COUNTRY>
      <COMPANY>CBS Records</COMPANY>
      <PRICE>9.90</PRICE>
      <YEAR>1988</YEAR>
     </CD>
     <CD>
      <TITLE>Greatest Hits</TITLE>
      <ARTIST>Dolly Parton</ARTIST>
      <COUNTRY>USA</COUNTRY>
      <COMPANY>RCA</COMPANY>
      <PRICE>9.90</PRICE>
      <YEAR>1982</YEAR>
     </CD>
     <CD>
      <TITLE>Still got the blues</TITLE>
      <ARTIST>Gary Moore</ARTIST>
      <COUNTRY>UK</COUNTRY>
      <COMPANY>Virgin records</COMPANY>
      <PRICE>10.20</PRICE>
      <YEAR>1990</YEAR>
     </CD>
     <CD>
      <TITLE>Eros</TITLE>
      <ARTIST>Eros Ramazzotti</ARTIST>
      <COUNTRY>EU</COUNTRY>
      <COMPANY>BMG</COMPANY>
      <PRICE>9.90</PRICE>
      <YEAR>1997</YEAR>
     </CD>
     <CD>
      <TITLE>One night only</TITLE>
      <ARTIST>Bee Gees</ARTIST>
      <COUNTRY>UK</COUNTRY>
      <COMPANY>Polydor</COMPANY>
      <PRICE>10.90</PRICE>
      <YEAR>1998</YEAR>
     </CD>
     <CD>
      <TITLE>Sylvias Mother</TITLE>
      <ARTIST>Dr.Hook</ARTIST>
      <COUNTRY>UK</COUNTRY>
      <COMPANY>CBS</COMPANY>
      <PRICE>8.10</PRICE>
      <YEAR>1973</YEAR>
     </CD>
     <CD>
      <TITLE>Maggie May</TITLE>
      <ARTIST>Rod Stewart</ARTIST>
      <COUNTRY>UK</COUNTRY>
      <COMPANY>Pickwick</COMPANY>
      <PRICE>8.50</PRICE>
      <YEAR>1990</YEAR>
     </CD>
     <CD>
      <TITLE>Romanza</TITLE>
      <ARTIST>Andrea Bocelli</ARTIST>
      <COUNTRY>EU</COUNTRY>
      <COMPANY>Polydor</COMPANY>
      <PRICE>10.80</PRICE>
      <YEAR>1996</YEAR>
     </CD>
     <CD>
      <TITLE>When a man loves a woman</TITLE>
      <ARTIST>Percy Sledge</ARTIST>
      <COUNTRY>USA</COUNTRY>
      <COMPANY>Atlantic</COMPANY>
      <PRICE>8.70</PRICE>
      <YEAR>1987</YEAR>
     </CD>
     <CD>
      <TITLE>Black angel</TITLE>
      <ARTIST>Savage Rose</ARTIST>
      <COUNTRY>EU</COUNTRY>
      <COMPANY>Mega</COMPANY>
      <PRICE>10.90</PRICE>
      <YEAR>1995</YEAR>
     </CD>
     <CD>
      <TITLE>1999 Grammy Nominees</TITLE>
      <ARTIST>Many</ARTIST>
      <COUNTRY>USA</COUNTRY>
      <COMPANY>Grammy</COMPANY>
      <PRICE>10.20</PRICE>
      <YEAR>1999</YEAR>
     </CD>
     <CD>
      <TITLE>For the good times</TITLE>
      <ARTIST>Kenny Rogers</ARTIST>
      <COUNTRY>UK</COUNTRY>
      <COMPANY>Mucik Master</COMPANY>
      <PRICE>8.70</PRICE>
      <YEAR>1995</YEAR>
     </CD>
     <CD>
      <TITLE>Big Willie style</TITLE>
      <ARTIST>Will Smith</ARTIST>
      <COUNTRY>USA</COUNTRY>
      <COMPANY>Columbia</COMPANY>
      <PRICE>9.90</PRICE>
      <YEAR>1997</YEAR>
     </CD>
     <CD>
      <TITLE>Tupelo Honey</TITLE>
      <ARTIST>Van Morrison</ARTIST>
      <COUNTRY>UK</COUNTRY>
      <COMPANY>Polydor</COMPANY>
      <PRICE>8.20</PRICE>
      <YEAR>1971</YEAR>
     </CD>
     <CD>
      <TITLE>Soulsville</TITLE>
      <ARTIST>Jorn Hoel</ARTIST>
      <COUNTRY>Norway</COUNTRY>
      <COMPANY>WEA</COMPANY>
      <PRICE>7.90</PRICE>
      <YEAR>1996</YEAR>
     </CD>
     <CD>
      <TITLE>The very best of</TITLE>
      <ARTIST>Cat Stevens</ARTIST>
      <COUNTRY>UK</COUNTRY>
      <COMPANY>Island</COMPANY>
      <PRICE>8.90</PRICE>
      <YEAR>1990</YEAR>
     </CD>
     <CD>
      <TITLE>Stop</TITLE>
      <ARTIST>Sam Brown</ARTIST>
      <COUNTRY>UK</COUNTRY>
      <COMPANY>A and M</COMPANY>
      <PRICE>8.90</PRICE>
      <YEAR>1988</YEAR>
     </CD>
     <CD>
      <TITLE>Bridge of Spies</TITLE>
      <ARTIST>T'Pau</ARTIST>
      <COUNTRY>UK</COUNTRY>
      <COMPANY>Siren</COMPANY>
      <PRICE>7.90</PRICE>
      <YEAR>1987</YEAR>
     </CD>
     <CD>
      <TITLE>Private Dancer</TITLE>
      <ARTIST>Tina Turner</ARTIST>
      <COUNTRY>UK</COUNTRY>
      <COMPANY>Capitol</COMPANY>
      <PRICE>8.90</PRICE>
      <YEAR>1983</YEAR>
     </CD>
     <CD>
      <TITLE>Midt om natten</TITLE>
      <ARTIST>Kim Larsen</ARTIST>
      <COUNTRY>EU</COUNTRY>
      <COMPANY>Medley</COMPANY>
      <PRICE>7.80</PRICE>
      <YEAR>1983</YEAR>
     </CD>
     <CD>
      <TITLE>Pavarotti Gala Concert</TITLE>
      <ARTIST>Luciano Pavarotti</ARTIST>
      <COUNTRY>UK</COUNTRY>
      <COMPANY>DECCA</COMPANY>
      <PRICE>9.90</PRICE>
      <YEAR>1991</YEAR>
     </CD>
     <CD>
      <TITLE>The dock of the bay</TITLE>
      <ARTIST>Otis Redding</ARTIST>
      <COUNTRY>USA</COUNTRY>
      <COMPANY>Atlantic</COMPANY>
      <PRICE>7.90</PRICE>
      <YEAR>1987</YEAR>
     </CD>
     <CD>
      <TITLE>Picture book</TITLE>
      <ARTIST>Simply Red</ARTIST>
      <COUNTRY>EU</COUNTRY>
      <COMPANY>Elektra</COMPANY>
      <PRICE>7.20</PRICE>
      <YEAR>1985</YEAR>
     </CD>
     <CD>
      <TITLE>Red</TITLE>
      <ARTIST>The Communards</ARTIST>
      <COUNTRY>UK</COUNTRY>
      <COMPANY>London</COMPANY>
      <PRICE>7.80</PRICE>
      <YEAR>1987</YEAR>
     </CD>
     <CD>
      <TITLE>Unchain my heart</TITLE>
      <ARTIST>Joe Cocker</ARTIST>
      <COUNTRY>USA</COUNTRY>
      <COMPANY>EMI</COMPANY>
      <PRICE>8.20</PRICE>
      <YEAR>1987</YEAR>
     </CD>
    </CATALOG>

  • 相关阅读:
    MVC视图展现模式之移动布局解析-续集
    网站就必须用响应式布局吗?MVC视图展现模式之移动布局
    用Word写博客园文章
    扩:new and override
    通告
    List-style-type属性失效
    在线浏览PDF之PDF.JS (附demo)
    08. Web大前端时代之:HTML5+CSS3入门系列~H5 Web存储
    07. Web大前端时代之:HTML5+CSS3入门系列~H5 地理位置
    06. Web大前端时代之:HTML5+CSS3入门系列~HTML5 画布
  • 原文地址:https://www.cnblogs.com/lengzhijun/p/4209956.html
Copyright © 2020-2023  润新知