深入学习XML

什么是XML

1.         XMLEXtensible Markup Language的缩写

2.         XML是一种类似于HTML的标记语言

3.         XML是用来描述数据的

4.         XML的标记不是在XML中预定义的,你必须定义自己的标记

5.         XML使用文档类型定义(DTD)或者模式(Schema)来描述数据

6.         XML使用DTD或者Schema后就是自描述的语言

XML是用来存放数据的

XML不是HTML的替代品,XMLHTML是两种不同用途的语言。

XML是被设计用来描述数据的,重点是:什么是数据,如何存放数据。

HTML是被设计用来显示数据的,重点是:显示数据以及如何显示数据更好上面。

HTML是与显示信息相关的, XML则是与描述信息相关的。

XML 语法

一个XML文档的例子

<?xml version="1.0" encoding="ISO-8859-1"?>

<note>

<to>Lin</to>

<from>Ordm</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

 

文档的第1:XML声明——定义此文档所遵循的XML标准的版本,在这个例子里是1.0版本的标准,使用的是ISO-8859-1 (Latin-1/West European)字符集。

文档的第2行是根元素(就象是说“这篇文档是一个便条”);

文档的第3--6行描述了根元素的四个子节点(to, from, heading, body);

文档的最后一行是根元素的结束,在XML文档中, 忽略结束标记是不符合规定的。

 

1.         XML标记都是大小写敏感的

2.         所有XML文档都必须包含一个单独的标记来定义,所有其他元素的都必须成对的在根元素中嵌套。XML文档有且只能有一个根元素

3.         属性值必须使用引号""

4.         使用XML,空白将被保留

5.         使用XML, CR / LF 被转换为 LF

6.         XML中的注释:<!-- 这是一个注释 -->

属性VS元素

应该尽量避免使用属性

1.         属性不能包含多个值(子元素可以)。

2.         属性不容易扩展。

3.         属性不能够描述结构(子元素可以)。

4.         属性很难被程序代码处理。

5.         属性值很难通过DTD进行测试。

但是如果能够同时避免以上所有问题的话,就应该使用属性,例如ID.

XML验证

通过DTDSchema可以验证一个XML文档是不是正确的。

DTD定义了XML文档中可用的合法元素。DTD的意图在于定义XML文档的合法建筑模块。他通过定义一系列合法的元素决定了XML文档的内部结构。

XML Schema(XML模式)是基于XMLDTD的替代品。

W3CXML规范声明:如果程序在处理XML文档中发现一个有效的错误,那么此程序应该终止。这就是XML软件相对于容易编写的原因。所有的XML文档地都应该是协调一致的。

XML解析器

XML解析器可以读取、更新、创建、操作一个XML文档。

微软的XML解析器是和IE5.0+浏览器捆绑在一起的。一旦你安装了IE5.0,那么就获得了XML解析器。这个浏览器除了被浏览器内部调用外,还可以在脚本中或者程序中调用。这个解析器的特点是支持与程序设计语言无关的编程模型,他支持以下技术:

1.         JavaScript, VBScript, Perl, VB, Java, C++ 等等

2.         W3C XML 1.0 XML DOM

3.         DTD XML文档验证

如果浏览器使用JavaScript作为脚本语言,那么利用下面的代码可以创建XML文档对象:

var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")

如果浏览器使用VBScript作为脚本语言,那么利用下面的代码可以创建XML文档对象:

set xmlDoc=CreateObject("Microsoft.XMLDOM")

如果在ASP程序中使用VBScript脚本语言,那么就可以使用下面的代码形式:

set xmlDoc=Server.CreateObject("Microsoft.XMLDOM")

XML高级部分

XML 命名空间

因为XML文档中使用的元素不是固定的,那么两个不同的XML文档使用同一个名字来描述不同类型的元素的情况就可能发生。而这种情况又往往会导致命名冲突。请看下面两个例子。

这个 XML 文档在table元素中携带了水果的信息:

<table>

<tr>

<td>Apples</td>

<td>Bananas</td>

</tr>

</table>

这个 XML 文档在table元素中携带了桌子的信息(家具,不能吃的哦):

<table>

<name>African Coffee Table</name>

<width>80</width>

<length>120</length>

</table>

如果上面两个XML文档片断碰巧在一起使用的话,那么将会出现命名冲突的情况。因为这两个片断都包含了<table>元素,而这两个table元素的定义与所包含的内容又各不相同。

使用命名空间来解决命名空间冲突的问题。

下面的XML文档在table元素中携带了信息

<h:table xmlns:h="http://www.w3.org/TR/html4/">

<h:tr>

<h:td>Apples</h:td>

<h:td>Bananas</h:td>

</h:tr>

</h:table>

下面的XML文档携带了家具table的信息:

<f:table xmlns:f="http://www.w3schools.com/furniture">

<f:name>African Coffee Table</f:name>

<f:width>80</f:width>

<f:length>120</f:length>

</f:table>

上面代码的第一行定义了命名空间属性。W3C 命名规范声明命名空间本身就是一个统一资源标示符,Uniform Resource Identifier (URI)

XML CDATA

XML文档中的所有文本都会被解析器解析。只有在CDATA部件之内的文本会被解析器忽略。如果文本包含了很多的"<"字符和"&"字符——就象程序代码一样,那么最好把他们都放到CDATA部件中。

一个 CDATA 部件以"<![CDATA[" 标记开始,以"]]>"标记结束

<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1
}
else
{
return 0
}
}
]]>

</script>

转义字符

如果在XML文档中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。所以不应该象下面那样书写代码:

<message>if salary < 1000 then</message>

为了避免出现这种情况,必须将字符"<" 转换成实体,象下面这样:

<message>if salary &lt; 1000 then</message>

下面是五个在XML文档中预定义好的实体:

&lt;

<

小于号

&gt;

>

大于号

&amp;

&

&apos;

'

单引号

&quot;

"

双引号

实体必须以符号"&"开头,以符号";"结尾。

注意: 只有"<" 字符和"&"字符对于XML来说是严格禁止使用的。剩下的都是合法的,为了减少出错,使用实体是一个好习惯。

XML编码

XML文档可以包含外文字符比如中文或者法语。为了让你的解析器能够明白这些字符,你必须在XML文档中统一的字符编码标准。

中文使用:encoding="gb2312"或者encoding="gbk"

HTML表格XML数据

通过数据岛,可以把XML文档引入到HTML页面中。

<xml src="cd_catalog.xml" id="xmldso" async="false">

</xml>

使用上面示例代码,可以把cd_catalog.xml文件载入一个叫"xmldso"的数据岛中。属性async="false"的作用是在HTML处理器开始处理XML数据以前,必须确保XML文档中的所有数据都被载入到内存中。

为了使你的XML数据能在HTML页面中显示出来,必须把的数据岛绑定到一个HTML元素上。

XML数据绑定到table元素,需要在table属性添加一个资源属性,并且在span元素中添加字段属性:

<table datasrc="#xmldso" width="100%" border="1">

<thead>

<th>Title</th>

<th>Artist</th>

<th>Year</th>

</thead>

<tr align="left">

<td><span datafld="TITLE"></span></td>

<td><span datafld="ARTIST"></span></td>

<td><span datafld="YEAR"></span></td>

</tr>

</table>

XML行为

行为(behavior)是一个CSS属性选择器。他指向一个包含了特殊代码并且能够改变HTML页面元素的XML文件(htc)。行为(Behavior)并不是W3C标准,他只是Microsoft的技术。

行为属性可以指向一个分离的XML文件,这个XML文件包含了能够改变XML或者HTML页面的元素或显示样式的脚本代码。

看下面这个HTML文件。在<style>元素中定义了<h1>元素的行为:

<html>

<head>

<style>

h1 { behavior: url(behave.htc) }

</style>

</head>

<body>

<h1>Move your Mouse over me</h1>

</body>

</html>

行为代码存储在一个XML文档(behave.htc)中,如下所示:

<component>

<attach for="element" event="onmouseover" handler="hig_lite" />

<attach for="element" event="onmouseout" handler="low_lite" />

<script type="text/javascript">

function hig_lite()

{

element.style.color=255

}

function low_lite()

{

element.style.color=0

}

</script>

</component>

 

这个行为文件包含JavaScript脚本。 这个脚本由<component>元素组成,组成的元素也包含了脚本事件操作者

XML技术

  • XHTML - 可扩展HTMLExtensible HTML

XHTML 使用XML重新定义了HTML 4.01的语法。XHTML 1.0HTML的下一个版本。更多的请参考我们的XHTML 指南。

  • CSS - 层叠样式表单(Cascading Style Sheets

CSS 样式单可以为XML文档添加显示信息。更多信息请阅读我们的CSS 指南。

  • XSL - 可扩展样式单语言(Extensible Style Sheet Language

XSL由三部分组成: XML文档转换(XML Document Transformation ,又叫XSLT,模式匹配语法( a pattern matching syntax ,又叫XPath), 格式话对象( a formatting object interpretationXSL FO)。

  • XSLT - XML 转换语言(XML Transformation

XSLT 是一种比CSS强大很多的语言。它可以将XML文档转换成其他格式的文档。。更多知识请阅读 XSL 指南。

  • XPath - XML匹配模式(XML Pattern Matching

XPath是一种用于标识XML文档各个部分的语言。这是一种为了XSLT XPointer而设计出来的语言。

  • XLink - XML链接语言(XML Linking Language

链接语言(The XML Linking Language XLink, 允许在不同的XML资源之间建立链接关系。

  • XPointer - XML指针语言(XML Pointer Language

XML指针语言(The XML Pointer Language XPointer, 标识XML文档的内部结构,例如元素、属性、内容等。

  • DTD - 文档类型定义 (Document Type Definition)

DTD主要用于定义编写XML文档所使用的元素。更多知识请参考 DTD 指南。

  • Namespaces - 命名空间

XML命名空间提供了一种可以把元素、属性、名字和URL地址引用相互关联的方法。

  • XSD - XML模式(XML Schema

模式可以和DTD相互替代,并且功能更强大。模式使用XML格式编写,支持命名空间和数据类型。更多请参考 Schema 指南。

  • XDR - 数据简化(XML Data Reduced

XDRXML模式(XML Schema)的简化版本。IE5.0+浏览器支持XDR

  • DOM - 文档对象模型(Document Object Model

DOM定义了XML文档的接口、属性和方法。 更多请参考 DOM 指南。

  • XQL - XMl查询语言(XML Query Language

XQL为存放XML文档中的数据提供一种便捷的查询语言。

  • SAX - XML的简单API(Simple API for XML)
SAX 是另一种读取和操作XML文档的编程接口。(与DOM类似)
posted on 2006-06-28 10:01  龙科技  阅读(425)  评论(0)    收藏  举报