关于XML
什么是XML?
XML是可扩展标记语言。类似于HTML,XML的宗旨是旨在传输数据,而非显示数据。其标签没有预定义,您需要自行定义标签。XML具有自我描述性,是W3C的推荐标准。
XML与HTML的区别。
XML被设计用来传输和存储数据,其焦点是数据的内容。HTML被设计用来显示数据,其焦点是数据的外观。HTML旨在显示信息,而XML旨在传输信息。
XML不是对HTML的替代XML是对HTML的补充。XML不会替代HTML,理解这一点很重要。在大多数web应用程序中,XML用于传输数据,而XML用于格式化并显示数据。对XML最好的描述是:XML是独立于软件和硬件的信息传输工具。
没有任何行为的XML。
XML是不作为的。
XML被设计用来结构化、存储以及传输信息。是不会做任何事情的。它仅仅是包装在XML标签中的纯粹的信息。我们需要编写软件或者程序接收和显示出这个文档。
XML的用途
XML应用于web开发的许多方面,常用语简化数据的存储和共享。
XML把数据从HTML分离。(通过使用几行Javascript,你就可以读取一个外部XML文件,然后更新HTML中的数据内容。)
XML简化数据共享。(XML数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。)
XML简化数据传输。(通过XML,可以在不兼容的系统之间轻松地交换数据。)
XML简化平台的变更。(XML在不损失数据的情况下,更容易扩展或升级到新的操作系统、新应用程序或者新的浏览器。)
XML使您的数据更有用。(由于XML独立于硬件、软件以及应用程序,不同的应用程序都能够访问您的数据,不仅仅在HTML页中,也可以从XML数据源中进行访问。)
XML用于创建新的Internet语言。(很多新的Internet语言是通过XML创建的:其中的例子包括:XHTML-最新的HTML版本WSDL-用于描述可用的web service)
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)
最后一行定义根元素的结尾。</note>
XML文档必须包含根元素,该元素是所有其他元素的父元素。
XML文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。
所有元素均可拥有子元素。
父元素拥有子元素。相同层级上的子元素成为同胞,所有元素均可拥有文本内容和属性。
XML语法规则
所有XML元素都必须有关闭标签。(在XML中省略关闭标签是非法的。)
note:XML声明没有关闭标签,它不是XML本身的组成部分,不是XML元素,并且也不需要关闭标签。
XML标签对大小写敏感。
XML必须正确地嵌套。例:<b><i>hello world</b></i>
XML文档必须有根元素。(XML文档必须有一个元素是所有其他元素的父元素,该元素称为根元素。)
XML的属性值必须加引号。
实体引用。
在XML中,一些字符拥有特殊的意义。
如果你把字符“<”放在XML元素中,会发生错误,这是因为解析器会把它当作新元素的开始。
错误XML:
<message>if salary < 1000 then</message>
正确XML:
<message>if salary < 1000 then</message>
在XML中,有5个预定义的实体引用:
< < 小于 > > 大于 & & 和号 &apos ' 单引号 " " 引号
note:在XML中,只有字符"<"和"&"确实是非法的。大于号是合法的。
XML中的注释
<!--this is a commont-->
在XML中,空格会保留
HTML会把多个连续的空格字符裁剪(合并)为一个,但是XML不会删节。
XML以LF存储换行
在Windows应用程序中,换行通常以一对字符来存储:回车符(CR)和换行符(LF)。这对字符与打字机设置新行的动作有相似之处。在Unix应用程序中,新行以LF字符存储。而Macintosh应用程序使用CR来存储。
XML元素
XML文档包含XML元素。
什么是XML元素?
XML元素是指从(且包括)开始标签知道(且包括)结束标签的部分。
元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。
<bookstore> <book category="CHILDREN"> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="WEB"> <title>Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore>
在上例中,<bookstore> 和 <book> 都拥有元素内容,因为它们包含了其他元素。<author> 只有文本内容,因为它仅包含文本。
在上例中,只有 <book> 元素拥有属性 (category="CHILDREN")。