我的XML学习笔记

1.什么是XML?
XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 被设计用来描述数据
XML 标签没有被预定义。您需要自行定义标签
XML 使用文件类型声明(DTD)或者 XML Schema 来描述数据。
带有 DTD 或者 XML Schema 的 XML 被设计为具有自我描述性
XML 是一个 W3C 标准

2.XML 声明
<?xml version="1.0" encoding="ISO-8859-1"?>
定义了 XML 的版本和文档中使用的字符编码。在这个例子中,遵守的是 XML 1.0 规范,并使用了 ISO-8859-1 字符集。

3.XML元素命名规则
XML 元素必须遵守这些命名规则:
名字可包含字母、数字以及其他的字符
名字不能以数字或者标点符号开始
名字不能以字符“xml”(或者XML、Xml)开始
名字不能包含空格

当您“发明创造”元素名称时,请留意并遵循下面的简单规则:
您可以使用任何名称,没有保留字,但是理想的做法是使名称具有描述性使用下划线的名称也很不错。
例子: <first_name>,<last_name>
应该在名称中避免"-"和"."。比方说,如果您将某个元素命名为"first-name",那么当您的软件试图从first段来提取名称时可能会出现混乱的局面。或者如果您将某个元素命名为"first.name",您的软件也许会认为"name"是"first"对象的一个属性。
元素名称可以是你希望的任何长度,但是也不要太夸张。名称应当比较简短,比如:<book_title>,而不是:<the_title_of_the_book>。
XML 文档经常有一个对应的数据库,其中的域会对应 XML 文档中的某个元素。有一个实用的经验,即使用数据库的名称规则命名 XML 文档中的元素
非英语的字母比如éòá也是合法的XML元素名,不过需要留意当软件开发商不支持这些字符时可能出现的问题。
不应在 XML 元素名称中使用 ":" ,这是由于它是用于命名空间(namespaces)的保留字。

4.避免使用属性
我们应当避免使用属性
因使用属性而引起的一些问题:
属性无法包含多个值(子元素可以)
属性不易扩展(为未来的变化)
属性无法描述结构(子元素可以)
属性更难被编程代码处理
不易通过某个 DTD 对属性值进行测试 - DTD(文档类型定义Document Type Definition) 用来定义 XML 文档的合法元素
如果您使用属性作为数据的容器,那么就会造就难以阅读和维护的文档。请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。
元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素

5.一个"形式良好"的 XML 文档会遵守前几章介绍过的 XML 语法规则:
XML 文档必须有根元素
XML 文档必须有关闭标签
XML 标签对大小写敏感
XML 元素必须被正确的嵌套
XML 属性必须加引号

6.XML文件如何链接到CSS
<?xml-stylesheet type="text/css" href="*.css"?>
注意:使用 CSS 格式化 XML 不能代表 XML 文档样式化的未来。XML 文档应当使用 W3C 的 XSL 标准进行格式化!

7.XML文件如何链接到XSL
<?xml-stylesheet type="text/xsl" href="*.xsl"?>

8.什么是XML数据岛
XML 数据岛是嵌入 HTML 中的 XML 数据。
一个数据岛实例:
<html>
    <body>
        <xml id="cdcat" src="/example/xmle/cd_catalog.xml"></xml>
        //<table> 标签的 datasrc 属性可以把 HTML 格元素绑定到 XML 数据岛,这个 datasrc 属性会引用数据岛的 id 属性
        <table border="1" datasrc="#cdcat">
            <thead>
                <tr><th>Artist</th><th>Title</th></tr>
            </thead>
            <tfoot>
                <tr><th colspan="2">This is my CD collection</th></tr>
            </tfoot>
            <tbody>
                <tr>
                    //<td> 无法被绑定至数据岛,所以我们使用了 <span> 标签,<span> 允许 datafld 属性来引用需要显示的XML元素
                    <td><span datafld="artist"></span></td>
                    <td><span datafld="title"></span></td>
                </tr>
            </tbody>
        </table>
    </body>
</html>

其中cd_catalog.xml文件内容为:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!--  Edited with XML Spy v2007 (http://www.altova.com)   -->
- <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>

运行结果为:
Artist Title
This is my CD collection
Bob Dylan Empire Burlesque
Bonnie Tyler Hide your heart
Dolly Parton Greatest Hits
Gary Moore Still got the blues
Eros Ramazzotti Eros
Bee Gees One night only
Dr.Hook Sylvias Mother
Rod Stewart Maggie May
Andrea Bocelli Romanza
Percy Sledge When a man loves a woman
Savage Rose Black angel
Many 1999 Grammy Nominees
Kenny Rogers For the good times
Will Smith Big Willie style
Van Morrison Tupelo Honey
Jorn Hoel Soulsville
Cat Stevens The very best of
Sam Brown Stop
T'Pau Bridge of Spies
Tina Turner Private Dancer
Kim Larsen Midt om natten
Luciano Pavarotti Pavarotti Gala Concert
Otis Redding The dock of the bay
Simply Red Picture book
The Communards Red
Joe Cocker Unchain my heart

 
原文地址:https://www.cnblogs.com/guoxiaowen/p/1127617.html