top
Loading...
XML介紹系列篇三
翻譯:Batman
系列七: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)