·建站首页 ·钻石 ·繁體
您的位置: 中国建站之家 -> 网站开发设计 -> XML教程 -> XML介绍系列(3)

XML介绍系列(3)

作者:未知  来源:http://edu.chinaz.com  发布时间:2005-7-19 0:10:34  发布人:acx

系列七:XML DOM

XML文档对象模型
在前面的文章里面,XML解释器可以使用编程的方法
来载入一个XML的文档.当这个文档被载入以后,
我们就可以通过XML DMO来获取和操纵整个文档的信息.
你可以访问ChildNodes属性,这是一个你的文档里面所有节点的入口.
这个节点接口用来读和写XML文档树状结构中的单个的节点.
目前的Microsoft XML解释器支持13种类型的节点.
下面的列表中列出了最常用的节点类型.

节点类型 例子
Document type <!DOCTYPE food SYSTEM "food.dtd">
Processing instruction <?xml version="1.0"?>
Element <drink type="beer">Carlsberg</drink>
Attribute type="beer"
Text Carlsberg

DOM使用三种方式来显示XML文档.
documentElement是XML文档树的最高一级.
有childNodes的元素或则更多子节点的副元素.
还有用来移动树状结构、访问节点和其属性值、插入或则删除节点
和将树状结构转换成XML的函数.
所有在这里面演示的Microsoft XML解释器函数
都是被正式的W3C XML DOM规范所推荐的, 除了loadXML函数.
不管你相信与否:官方的DOM中没有包含一个标准的用来载入XML文档的函数
(译者理解为:就是没有一个正规的函数,只要给出xml的文件,就能够显示整个
树状结构,而必须都要经过载入过程,然后自己编程来显示这个树状结构的意思)

浏览节点树
下面的代码将浏览整个节点树,
并且把结果显示在浏览器中:
set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("xml_note.xml")
for each x in xmlDoc.documentElement.childNodes
document.write(x.nodename)
document.write(": ")
document.write(x.text)
next

翻译:Batman
系列八:XSL - The Style Sheet Language of XML(XML的样式表语言)

HTML页面使用标志(tags)来显示数据,并且所有的标志都很好理解
例如<p>是表示段落,<h1>表示标题, 并且一个浏览器
也知道怎么来把这些标志显示在页面中.
在XML中,我们使用了自定义的标志,这些标志的定义
浏览器不能够理解了.例如一个XML中的标志 <table>
可以被理解为HTML中的表格标志
但是也可以理解为一种木制的家具.
于是为了显示XML文档,就必须有一种
来描述这些文档如何显示的机制.
这种机制就是XSL (eXtensible Stylesheet Language)
它是XML的样式表描述语言.
XSL的历史比HTML用的CSS(级联样式表Cascading Style Sheets)还要悠久.

XSL包括两部分:
一个用来转换XML文档的方法
一个用来格式化XML文档的方法
如果你没法理解的话,可以把XSL当成一种能够把XML转变成HTML的语言.
一种能够筛选和排序XML文档中数据的语言,
一种能够根据XML的数据数值格式化XML数据的语言(例如把负数显示成红色).

转换XML文档
假设你现在想把下面的XML文档 (使用IE5打开哦)转换成HTML:
文件为portfolio.xml
<?xml version="1.0"?>
<portfolio>
<stock exchange="nyse">
<name>zacx corp</name>
<symbol>ZCXM</symbol>
<price>28.875</price>
</stock>
<stock exchange="nasdaq">
<name>zaffymat inc</name>
<symbol>ZFFX</symbol>
<price>92.250</price>
</stock>
</portfolio>
请记住这时的效果一

那么你可以试试使用下面的XSL文档(使用IE5打开)
它是一个把你的XML中的数据转换成大家都能够读的HTML文档的模板
文件为portfolio.xsl
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<table border="2" bgcolor="yellow">
<tr>
<th>Symbol</th>
<th>Name</th>
<th>Price</th>
</tr>
<xsl:for-each select="portfolio/stock">
<tr>
<td><xsl:value-of select="symbol"/></td>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="price"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
在上面这个文件中,<xsl:for-each>元素定位XML文档中的元素并且重复套用模板中的每一个元素.
由于XSL本身也是一个XML文件,所以这个文件的开始也
使用了一个XML的申明,<xsl:stylesheet>元素定义了这个文档
是一个样式表,
你必须要外套一个摸板<xsl:template match="/">它是对应与
XML源文档中的根节点的.
请记住这时的效果二

现在你在你的源文件中XML文档中的第二行加入引用这个xsl文件
这时你的xml文件就会被转换成HTML了(在IE5中打开这个文件):
文件为portfolio.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="portfolio.xsl"?>
<portfolio>
<stock exchange="nyse">
<name>zacx corp</name>
<symbol>ZCXM</symbol>
<price>28.875</price>
</stock>
<stock exchange="nasdaq">
<name>zaffymat inc</name>
<symbol>ZFFX</symbol>
<price>92.250</price>
</stock>
</portfolio>

一个跨浏览器平台的解决方案:
当你使用XSL来把XML文档转换成HTML后,
难道你没有想到其实你已经实现了让各种不同的浏览器都能够浏览你的数据的
解决方案了吗?
这个解决方案是如此的简单:
只要在你的SERVER上把XML转换成HTML并且把这个
HTML文档传递给BROWSER.
这就是XSL的美妙之处,它实现了在服务器上能够把数据格式从一种格式转换成
另外一种格式.并且把可读的数据返回给所有的浏览器

系列之九:XML Behaviors - 新的DHTML?

Behaviors - 这个是什么东东?
Behavior是一个新的CSS选择属性.
一个behavior选择能够指向一个单独
的包含代码(能够执行XML或则HTML页面中元素)的文件

不知道你听明白了否?它是一个能够完全将HTML中的脚本代码移走的方法吗?
呵呵,好象就是这样的!
现在我们可以来写自己的脚本库了,并且能够把这些脚本库运用到我们希望
的任何一个元素上去了。

它是如何工作的呢?
还是让例子来说明问题把:
下面是一个HTML文件:
<html>
<head>
<style>
h1 { behavior: url(behave.htc) }
</style>
</head>

<body>
<h1>Hello World</h1>
</body>
</html>

这个HTML文件有一个<style>元素
来定义了一个<h1>元素的behavior.
这个behavior的代码保存在下面这个behave.htc 文件中:
<component>
<attach for="element" event="onmouseover" handler="hig_lite" />
<attach for="element" event="onmouseout" handler="low_lite" />

<script language="Javascript">
function hig_lite
{
element.filters.glow.strength=5
}
function low_lite
{
element.filters.glow.strength=0
}
</script>
</component>

这个behavior文件包含了很普通的Java script.
这个脚本包含在一个<component>元素中.
当然这个component同样包含了这个脚本的事件句柄
怎么样,这个behavior是不是比较Cool呀?
去试试这个例子把,多移动鼠标,看看效果怎么样?(请使用IE5)

将本文收藏到QQ书签与更多好友分享

上一篇:XML介绍系列(4)

下一篇:XML介绍系列(2)