XML简介及举例

可扩展标记语言(eXtensibleMarkup Language,简称XML),是一种标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,既可以选择国际通用的标记语言,比如HTML,也可以使用像XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。

XML被设计用来传输和存储数据。HTML被设计用来显示数据。

用途:XML设计用来传送及携带数据信息,不用来表现或展示数据,HTML语言则用来表现数据,所以XML用途的焦点是它说明数据是什么,以及携带数据信息。(1)、丰富文件:自定义描述并使其更丰富:属于文件为主的XML技术应用;标记是用来定义一份资料应该如何呈现;(2)、元数据:描述其它文件或网络资讯;属于资料为主的XML技术应用;标记是用来说明一份资料的意义;(3)、配置文档:描述软件设置的参数。

结构每个XML文档都由XML序言开始,告诉解析器或浏览器这个文件应该按照XML规则进行解析。之后就是XML的根元素。任何XML文档都只能有一个跟元素。根元素里面,可以有子元素,子元素里面可以有子子元素,以此类推。根元素是由文档类型定义(DTD)或XML刚要定义的。XML文件的第二行并不一定要包含文档元素,如果有注释或者其他内容,文档元素可以迟些出现。

1、XML简介:XML指可扩展标记语言。XML是一种标记语言,很类似HTML。XML的设计宗旨是传输数据,而非显示数据。XML标签没有被预定义,你需要自行定义标签。XML被设计为具有自我描述性。XML是W3C的推荐标准。

XML与HTML的主要差异:(1)、XML不是HTML的替代;(2)、XML和HTML为不同的目的而设计;(3)、XML被设计为传输和存储数据,其焦点是数据的内容;(4)、HTML被设计用来显示数据,其焦点是数据的外观;(5)、HTML旨在显示信息,而XML旨在传输信息。

没有任何行为的XML。

XML仅仅是纯文本

通过XML你可以发明自己的标签。在HTML中使用的标签是预定义的,HTML文档只使用在HTML标准中定义过的标签。XML允许创作者定义自己的标签和自己的文档结构。

XML不是对HTML的替代,XML是对HTML的补充。XML是独立于软件和硬件的信息传输工具。

2、XML用途:XML应用与web开发的许多方面,常用于简化数据的存储和共享。

XML把数据从HTML分离:如果你需要在HTML文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑HTML。通过XML,数据能够存储在独立的XML文件中,这样你就可以专注于使用HTML进行布局和显示,并确保修改底层数据不再需要对HTML进行任何的改变。通过使用几行JavaScript,你就可以读取一个外部XML文件,然后更新HTML中的数据内容。

XML简化数据共享:XML数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。这让创建不同应用程序可以共享的数据变得更加容易。

XML简化数据传输:通过XML,可以在不兼容的系统之间轻松地交换数据。

XML简化平台的变更:XML数据以文本格式存储,这使得XML在不损失数据的情况下,更容易扩展或升级到新的操作系统、新应用程序和新的浏览器。

XML使你的数据更有用:不同的应用程序都能够访问你的数据,不仅仅在HTML页中,也可以从XML数据源中进行访问。通过XML,你的数据可供各种阅读设备使用。

XML用于创建新的Internet语言:很多新的Internet语言是通过XML创建的。

3、XML数结构:XML文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”。

XML使用简单的具有自我描述性的语法

XML文档形成一种树结构:XML文档必须包含根元素。该元素是所有其他元素的父元素。XML文档中的元素形成了一颗文档数。这棵树从根部开始,并扩展到数的底端。所有元素均可拥有子元素。父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。所有元素均可拥有文本内容和属性(类似HTML中)。

4、XML语法:XML的语法规则很简单,且很有逻辑。

所有XML元素都须有关闭标签。在XML中,省略关闭标签是非法的。所有元素都必须有关闭标签。在HTML,经常会看到没有关闭标签的元素。

XML声明没有关闭标签。这不是错误。声明不属于XML本身的组成部分。它不是XML元素,也不需要关闭标签。

XML标签对大小写敏感。XML元素使用XML标签进行定义。必须使用相同的大小写来编写打开标签和关闭标签。打开标签和关闭标签通常被称为开始标签和结束标签。

XML必须正确地嵌套。在HTML中,常会看到没有正确嵌套的元素。在XML中,所有元素都必须彼此正确地嵌套。

XML文档必须有根元素。XML文档必须有一个元素是所有其他元素的父元素,该元素称为根元素。

XML的属性值须加引号。与HTML类似,XML也可拥有属性(名称/值的对)。在XML中,XML的属性值须加引号。

实体引用:在XML中,一些字符拥有特殊的意义。如果你把字符”<”放在XML元素中,会发生错误,这是因为解析器会把它当作新元素的开始。为了避免这个错误,请用实体引用来代替”<”字符。

在XML中,有5个预定义的实体引用:&lt;(<),&gt;(>),&amp;(&),&apos;(‘),&quot;(“).在XML中,只有字符”<”和”&”确实是非法的。大于号是合法的。但是用实体引用来代替它是一个好习惯。

XML中的注释:在XML中编写注释的语法与HTML中的语法相似

在XML中,空格会被保留:HTML会把多个连续的空格字符裁减(合并)为一个。在XML中,文档中的空格不会被删节。

XML以LF存储换行

5、XML元素:XML文档包含XML元素。

XML元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。元素可包含其它元素、文本或者两者的混合物。元素也可以拥有属性。

XML命名规则:XML元素必须遵循以下命名规则:(1)、名称可以含字母、数字以及其它的字符;(2)、名称不能以数字或者标点符号开始;(3)、名称不能以字符”xml”(或者XML、Xml)开始;(4)、名称不能包含空格。可使用任何名称,没有保留的字词。

最佳命名习惯:(1)、使名称具有描述性,使用下划线的名称也很不错;(2)、名称应当比较简短;(3)、避免”-”、”.”、”:”字符。XML文档经常有一个对应的数据库,其中的字段会对应XML文档中的元素。有一个实用的经验,即使用数据库的名称规则来命名XML文档中的元素。

非英语的字母也是合法的XML元素名,不过需要留意软件开发商不支持这些字符时可能出现的问题。

XML元素是可扩展的。XML元素是可扩展,以携带更多的信息。XML的优势之一,就是可以经常在不中断应用程序的情况下进行扩展。

6、XML属性XML元素可以在开始标签中包含属性,类似HTML。属性提供关于元素的额外(附加)信息。

在HTML中(以及在XML中),属性提供有关元素的额外信息。属性通常提供不属于数据组成部分的信息。

XML属性必须加引号。属性值必须被引号包围,不过单引号和双引号均可使用。如果属性值本身包含双引号,那么有必要使用单引号包围它,或者可以使用实体引用。

XML元素vs.属性:没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用子元素。在HTML中,属性用起来很便利,但是在XML中,你应该尽量避免使用属性。如果信息感觉起来很像数据,那么请石永刚子元素吧。

使用属性而引起的一些问题:(1)、属性无法包含多重的值(元素可以);(2)、属性无法描述树结构(元素可以);(3)、属性不易扩展;(4)、属性难以阅读和维护。请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。

针对元数据的XML属性:有时候会向元素分配ID引用。这些ID索引可用于标识XML元素,它其作用的方式与HTML中ID属性是一样的。

元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素。

7、XML验证:拥有正确语法的XML被称为“形式良好”的XML。通过DTD验证的XML是“合法”的XML。

“形式良好”或“结构良好”的XML文档拥有正确的语法。

验证XML文档:合法的XML文档是“形式良好”的XML文档,同样遵守文档类型定义(DTD)的语法规则。

DTD的作用是定义XML文档的结构。它使用一系列合法的元素来定义文档结构。

XMLSchema:W3C支持一种基于XML的DTD代替者,它名为XML Schema。

8、XML验证器:XML错误会终止你的程序。

XML文档中的错误会终止你的XML程序。W3C的XML规范声明,如果XML文档存在错误,那么程序就不应当继续处理这个文档。

如果使用HTML,创建包含大量错误的文档是有可能的。其中一个主要的原因是HTML浏览器相当臃肿,兼容性也很差,并且它们有自己的方式来确定当发现错误时文档应该显示为什么样子。使用XML时,这种情况不应当存在。

9、XML浏览器支持:几乎所有的主流浏览器均支持XML和XSLT。

10、查看XML文件:在所有现代浏览器中,均能够查看原始的XML文件。

XML文档不会携带有关如何显示数据的信息。由于XML标签由XML文档的作者”发明”,浏览器无法确定像<table>这样的一个标签究竟描述一个HTML表格还是一个餐桌。在没有任何有关如何显示数据的信息的情况下,大多数的浏览器都会仅仅把XML文档显示为源代码。

11、使用CSS显示XML:通过使用CSS,可为XML文档添加显示信息。

使用CSS来格式化XML文档是有可能的。

使用CSS格式化XML不是常用的方法,更不能代表XML文档样式化的未来。W3C推荐使用XSLT。

12、使用XSLT显示XML:通过使用XSLT,你可以向XML文档添加显示信息。

XSLT(eXtensibleStylesheet Language Transformations)远比CSS更加完善。

使用XSLT的方法之一是在浏览器显示XML文件之前,先把它转换为HTML。

在服务器上通过XSLT转换XML。在使用XSLT来转换XML时,不同的浏览器可能会产生不同结果。为了减少这种问题,可以在服务器上进行XSLT转换。

13、XMLHttpRequest对象:XMLHttpRequest对象用于在后台与服务器交换数据。

XMLHtttpRequest对象是开发者的梦想,因为你能够:(1)、在不重新加载页面的情况下更新网页;(2)、在页面已加载后从服务器请求数据;(3)、在页面已加载后从服务器接收数据;(4)、咋后台向服务器发送数据。

所有现代的浏览器都支持XMLHttpRequest对象。

所有现代浏览器都内建了XMLHttpRequest对象。通过一行简单的JavaScript代码,就可以创建XMLHttpRequest对象:xmlhttp =new XMLHttpRequest();

XML/ASP:你也可以把XML文档打开并发送到服务器上的ASP页面,分析此请求,然后传回结果。

任何W3C推荐标准均未规定XMLHttpRequest对象。

14、XML解析器:所有现代浏览器都内建了供读取和操作XML的XML解析器。解析器吧XML转换为XML DOM对象----可通过JavaScript操作的对象。

解析器把XML载入内存,然后把它转换为可通过JavaScript访问的XML DOM对象。

跨域访问:出于安全方面的原因,现代的浏览器不允许跨域的访问。这意味着,网页以及它试图加载的XML文件,都必须位于相同的服务器上。

15、XMLDOM:DOM(Document Object Model,文档对象模型)定义了访问和操作文档的标准方法。DOM把XML文档作为树结构来查看。能够通过DOM树来访问所有元素。可以修改或删除它们的内容,并创建新元素。元素,它们的文本,以及它们的属性,都被认为是节点。

HTMLDOM(HTML Document Object Model)定义了访问和操作HTML文档的标准方法。可以通过HTML DOM访问所有HTML元素。

InternetExplorer使用loadXML()方法来解析XML字符串,而其它浏览器使用DOMParser对象。

16、XMLto HTML:在HTML中显示XML数据。

17、XML命名空间(XML Namespaces):XML命名空间提供避免元素命名冲突的方法。

在XML中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。

XMLNamespace(xmlns)属性:XML命名空间属性被放置于元素的开始标签之中,并使用以下语法:xmlns:namespace-prefix=”namespaceURI”

当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。用于表示命名空间的地址不会被解析器用于查找信息。其唯一的作用是赋予命名空间一个唯一的名称。不过,很多公司常常会作为指针来使用命名空间指向实际存在的网页,这个网页包含关于命名空间的信息。

统一资源标识符(UniformResource Identifier(URI)):统一资源标识符是一串可以标识因特网资源的字符。最常见的URI是用来标示因特网域名地址的统一资源定位器(URL).另一个不那么常用的URI是统一资源命名(URN)。

默认的命名空间:为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作,语法:xmlns=”namespaceURI”

18、XMLCDATA:所有XML文档中的文本均会被解析器解析。只有CDATA区段(CDATA section)中的文本会被解析器忽略。

PCDATA值的是被解析的字符数据(ParsedCharacter Data)。XML解析器通常会解析XML文档中的所有的文本。当某个XML元素被解析时,其标签之间的文本也会被解析。解析器之所以这么做是因为XML元素可包含其它元素。

转义字符:非法的XML字符必须被替换为实体引用(entityreference)。

CDATA指的是不应由XML解析器进行解析的文本数据(Unparsed Character Data)。CDATA部分中的所有内容都会被解析器忽略。CDATA部分由”<![CDATA[”开始,由”]]>”结束。CDATA部分不能包含字符串”]]>”,也不允许嵌套的CDATA部分。标记CDATA部分结尾的”]]>”不能包含空格或折行。

19、XML编码:XML文档可以包含非ASCII字符,比如法语。为了避免错误,需要规定XML编码,或者将XML文档存为Unicode。

编码属性应当被指定为文档被保存时所使用的编码。避免错误的建议是:(1)、使用支持编码的编辑器;(2)、确定编辑器使用的编码;(3)、在你的XML文档中使用相同的编码属性。

20、服务器上的XML:XML文件是类似HTML文件的纯文本文件。能够通过标准的web服务器轻松地存储和生成XML。

XML文件在Internet服务器上进行存储的方式与HTML文件完全相同。

通过ASP生成XML:XML可在不安装任何XML软件的情况下载服务器端生成。

通过PHP生成XML。

从数据库获取XML:XML可在不安装任何XML软件的情况下从数据库生成。

在服务器上通过XSLT转换XML。

通过ASP把XML保存为文件。

示例:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 每个XML文档都由XML序言开始,告诉解析器或浏览器这个文件应该按照XML规则进行解析 -->

<!-- XML test -->
<!-- XML文档必须有一个元素是所有其他元素的父元素,该元素称为根元素 -->
<!-- 任何XML文档都只能有一个跟元素。根元素里面,可以有子元素,子元素里面可以有子子元素,以此类推 -->
<NOTE>

<!1--  查看XML文件 -->
<!-- XML标签没有被预定义,你需要自行定义标签。XML被设计为具有自我描述性 -->
<breakfast_menu>
  <food>
	<name>Belgian Waffles</name>
	<price>$5.95</price>
	<description>two of our famous Belgian Waffles with plenty of real maple syrup</description>
	<calories>650</calories>
  </food>
  <food>
	<name>Strawberry Belgian Waffles</name>
	<price>$7.95</price>
	<description>light Belgian waffles covered with strawberries and whipped cream</description>
	<calories>900</calories>
  </food>
</breakfast_menu>

<!-- 通过使用CSS,可为XML文档添加显示信息 -->
<!-- XML和CSS -->

<!-- 使用XSLT的方法之一是在浏览器显示XML文件之前,先把它转换为HTML -->
<!-- XML和XSLT -->

<!-- 通过JavaScript来解析XML -->

<!-- XML to HTML -->

<!-- XMLHttpRequest对象用于在后台与服务器交换数据 -->
<!-- 使用 XMLHttpRequest 对象 -->

<!-- 使用命名空间:XML命名空间提供避免元素命名冲突的方法,针对多个文档 -->
<Blog xmlns="http://blog.csdn.net/fengbingchun">
  <Category>
	<Android>8</Andorid>
	<OpenCV>70</Andorid>
  </Category>
</Blog>

<!-- XML CDATA -->
<!-- CDATA指的是不应由XML解析器进行解析的文本数据 -->
<fun>
<![CDATA[
funciton Add(a,b)
{
	return a + b;
}
]]>
</fun>

</NOTE>
以上内容摘自:http://www.w3school.com.cn/xml/index.asp

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念