XML基础
XML被设计用来传输和存储数据。
- XML指可扩展标记语言
- XML是一种标记语言,类似HTML
- XML的设计宗旨是传输数据,而非显示数据
- XML标签没有被预定义。需要自行定义标签
- XML被设计为具有自我描述性。
XML树结构
XML文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”。
<?xml version="1.0" encoding="utf-8"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
第一行是XML声明。它定义XML的版本(1.0)和所使用的编码(utf-8)。
下一行是描述文档的根元素
<note>
接下来4行描述根的4个子元素(to、from、heading以及body):
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
最后一行定义根元素的结尾:
</note>
XML文档形成一种树结构
XML文档必须包含根元素。该元素是所有其他元素的父元素。
XML文档中的元素形成了一颗文档树。这棵树从根部开始,并扩展到树的最低端。
所有元素均可拥有子元素。
父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞。
所有元素均可拥有文本内容和属性。
XML语法
所有XML元素都必须有关闭标签
<p>This is a paragraph</p>
<p>This is another paragraph</p>
XML标签对大小写敏感
XML元素使用XML标签进行定义。
必须使用相同的大小写来编写打开标签和关闭标签:
<Message>这是错误的。</message>
<message>这是正确的。</message>
XML必须正确的嵌套
XML文档必须有根元素
XML的属性值须加引号
在XML中,XML的属性值须加引号
<note date="08/08/2008">
<to>George</to>
<from>John</from>
</note>
实体引用
在XML中,一些字符拥有特殊的意义。
为避免错误,一般使用实体引用来代替一些特殊意义的字符(XML中有预定义的实体引用):
< | < | 小于 |
---|---|---|
> | > | 大于 |
& | & | 和号 |
' | ’ | 单引号 |
&qupt; | " | 双引号 |
在XML中,空格会被保留
在XML中,文档中的空格不会被删减。
XML元素
XML元素指的是从开始标签直到结束标签的部分。
元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。
XML命名规则
XML元素必须遵循以下命名规则:
- 名称可以含字母、数字以及其他的字符。
- 名称不能以数字或者标点符号开始。
- 名称不能以字符"XML"(xml、Xml)开始。
- 名称不能包含空格。
可使用任何名称,没有保留的字词。
名称应当比较简短,比如<bool_title>,而不是<the_title_of_the_book>。
避免"-"、"."、":"字符。
XML文档有一个对应的数据库,其中的字段会对应XML文档中的元素。
XML元素是可扩展的,以携带更多的信息。
XML的优势之一,就是可以经常在不中断应用程序的情况下进行扩展。
XML属性
XML元素可以在开始标签中包含属性,属性提供关于元素的额外信息。
XML属性必须加引号
属性值必须被引号包围,不过单引号和双引号均可使用。如果属性值本身就包含双引号,那么有必要使用单引号包围它。
XML元素 vs.属性
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
在第一个例子中,sex是一个属性,在第二个例子中,sex则是一个子元素。两者均可提供相同的信息。
属性的一些问题:
- 属性无法包含多重的值(元素可以)
- 属性无法描述树结构(元素可以)
- 属性不易扩展
- 属性难以阅读和维护
XML验证
拥有正确语法的XML被称为“形式良好”的XML。
通过DTD验证的XML是“合法”的XML。
形式良好的XML文档
“形式良好”的文档遵守XML的语法规则:
- XML文档必须有根元素
- XML文档必须有关闭标签
- XML标签对大小写敏感
- XML元素必须被正确的嵌套
- XML属性必须加引号
验证XML文档
合法的XML文档是“形式良好”的XML文档,同时遵守文档类型定义的语法规则。
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE note SYSTEM "Note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
在上例中,DOCTYPE声明是对外部DTD文件的引用。下面的段落展示了这个文件的内容。
XML DTD
DTD的作用是定义XML文档的结构,它使用一系列合法的元素来定义文档结构。