http://www.w3school.com.cn/xml/index.asp
1. XML简介
XML被设计用来传输和存储数据,其焦点是数据内容。HTML被设计用来显示数据,其焦点是数据的外观。即HTML旨在显示信息,而XML旨在传输信息
XML仅仅是纯文本,通过XML发明自己的标签,XML不是对HTML的替代(XML是对HTML的补充)
XML不会替代HTML,理解这一点非常重要。大多数Web应用程序中,XML用于传输数据,而HTML用于格式化并显示数据。
XML是独立于软件和硬件的信息传输工具。
2. XML用途
XML把数据从HTML分离:动态修改数据内容
XML简化数据共享:独立于软件和硬件的数据存储方法
XML简化数据传输:不兼容系统之间交换数据
XML简化平台变更:升级系统导致数据不兼容
XML使数据更有用:XML独立于硬件、软件以及应用系统
3. XML树结构
XML文档形成了一种树结构,从“根部”开始,然后扩展到“枝叶”。
XML使用简单的具有自我描述的语法:
<?xmlversion="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forgetthe meeting!</body>
</note>
第一行是XML声明,定义了XML的版本和所使用的编码
下一行描述文档的根元素 <note>
接下来4行描述根的四个字元素(to,from,heading以及body)
最后一行是定义根元素的结尾:</note>
XML形成一种树结构:
XML必须包含根元素,该元素是其他元素的父元素
XML文档形成了一棵文档树,从根部开始,扩展到树的最底端。
<root>
<child>
<subchild>… </subchild>
</child>
</root>
父、子以及同胞等属于用于描述元素之间的关系。父元素拥有字元素,相同层级上的子元素成为同胞,所有元素均可拥有文本内容和属性。
<bookstore>
<book category="COOKING">
<titlelang="en">Everyday Italian</title>
<author>GiadaDe Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<bookcategory="CHILDREN">
<titlelang="en">Harry Potter</title>
<author>JK. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<bookcategory="WEB">
<titlelang="en">Learning XML</title>
<author>ErikT. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
4. XML语法
XML的语法规则很简单,且很有逻辑。这些规则很容易学习,也容易使用。
所有XML元素都须有关闭标签:
HTML有不闭合标签:<p>This is a paragraph
XML中省略关闭标签是非法的,所有元素都需要有关闭标签
<p>Thisis a paragraph</p>
XML标签大小写敏感:
XML元素使用XML标签进行定义。XML标签对大小写敏感,即对于标签<Letter>与<letter>是不同的。必须使用相同的大小写来编写打开标签和关闭标签。
<Message>这是错误的</message>
<message>这是正确的</message>
打开标签和关闭标签又被称为开始标签和结束标签。
XML必须正确地嵌套:
HTML可以有不正确嵌套的元素:
<b><i>Thistext is bold and italic</b></i>
在XML中,所有元素都必须彼此正确嵌套: <b><i>This textis bold and italic</i></b>,也即<i>元素是在<b>元素内打开的,那必须在<b>元素内关闭。
XML文档必须有根元素:
XML文档必须有一个元素是其他所有元素父元素
XML的属性值须加引号:
与HTML类似,XML也可以拥有属性(名称/值的对),在XML中XML的属性值需要加引号。
<note date=08/08/2008>
<to>George</to>
<from>John</from>
</note>
<notedate=” 08/08/2008” >
<to>George</to>
<from>John</from>
</note>
第一个文档中是错误的,note元素的date属性要加引号。
实体引用:
XML中,一些字符拥有特殊意义。“<”如果放在XML元素中,会发生错误,解析器会将“<”解析为新的元素的开始。
因此<message>if salary < 1000then </message> 是错误的,为了避免这种错误,使用实体引用来替代“<”字符:
<message>ifsalary < 1000 then </message>
XML有5个预定义的实体引用:
< < 小于
> > 大于
& & 和号
' ‘ 单引号
" “ 双引号
XML中只有字符 “<”和”&”是非法的,其他的则是一个好的习惯的体现。
XML中的注释:
XML中的编写注释的语法与HTML的语法很相似:
<!--This is a comment -->
XML中空格会被保留:
HTML会把多个连续空格字符裁剪为一个:
HTML: Hello my name is David.
输出: Hello my name is David.
在XML中,文档中的空格不会被删除。
XML以LF存储换行:
Windows应用程序中,通常以一对字符来存储:回车符(CR)和换行符(LF)。这对字符与打字机设置新行的动作有相似之处。Unix中新行以LF字符存储。
5. XML元素
XML元素指从(且包括)开始标签直到(且包括)结束标签的部分。
元素可包含其他元素,文本或两者的混合物。元素可以拥有属性。
<bookstore>
<bookcategory="CHILDREN">
<title>HarryPotter</title>
<author>JK. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<bookcategory="WEB">
<title>LearningXML</title>
<author>ErikT. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
上例中,<bookstore>和<book>都拥有元素内容,他们都包含了元素,而<author>只有文本内容。<book>元素拥有属性(category=”CHILDREN”)
XML命名规则:1. 名称可以含有字母,数字以及其他字符。2.名字不能以数字或者标点符号开始。3.名称不能以字符xml或XML,或Xml开始。3名称不能包含空格
可以使用任何名称,没有保留的字词。
最佳的命名习惯:名称要简短,要避免使用”-”,”.”以及”:”等符号,
XML元素是可扩展的:对于如下的XML的例子,创建应用程序可以将to,from以及body等元素的内容提取出来:
<note>
<to>George</to>
<from>John</from>
<body>Don't forgetthe meeting!</body>
</note>
提取的内容可能如下:
MESSAGE
To: George
From: John
Don't forget the meeting!
如果将上述文件扩展为如下的形式,那么我们的应用程序仍然可以从其中抽取出原本的信息,而不会出现错误。
<note>
<date>2008-08-08</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forgetthe meeting!</body>
</note>
6.XML属性
XML元素可以在开始标签中包含属性,类似HTML,属性提供了关于元素的额外附加的信息。
HTML中 <img src=”computer.gif”>,src属性提供有关<img>元素的额外信息。在HTML中,属性提供了有关元素的额外信息。
XML的属性通常提供不属于数据组成部分的信息,在下面例子中,文件类型与数据无关,但是需要处理这个元素的软件来说很重要:
<filetype=”gif”> computer.gif</file>
XML属性必须加引号,单引号和双引号均可使用,例如person属性:
<personsex=”femal”> 或者可以写作: <person sex=’ femal’ >
如下的例子中,sex可以是属性,也可以是元素,提供了相同的信息量。何时使用属性,何时使用元素没有规则,但是XML中应尽量避免使用属性。
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
使用属性会引起一些问题:属性无法包含多重的值,属性无法描述树结构,属性不易扩展以及属性难以阅读和维护。
针对元数据的XML属性,有时候向元素分配ID引用,这些ID索引用于标识XML元素,起的作用与HTML中ID属性是一样的,
<messages>
<note id="501">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
<note id="502">
<to>John</to>
<from>George</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>
ID仅仅是一个标识,用于标识不同的便签,并不是便签数据的组成部分。