DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML基礎 >> 第14章 XSL變換
第14章 XSL變換
編輯:XML基礎     

XML教程

 

可擴展的樣式語言(Extensible Style Language,XSL)包括變換語言(transformation language)和格式化語言(formatting language)。每種語言都是一個XML應用程序。變換語言提供定義規則的元素如何將XML文檔變換成另一個XML文檔。被變換的XML文檔可能使用原文檔的標記和DTD,或者使用一組完全不同的標記。特別是,可能會使用XSL第二部分(格式化對象)定義的標記。本章涉及到XSL變換語言中的部分內容。

本章的主要內容如下:

* 理解XSL、XSL變換和模板

* 計算節點的值

* 處理多個元素

* 用表達式選擇節點

* 理解缺省的模板規則

* 確定輸出要包含的內容

* 復制當前節點

* 對節點進行計數、對輸出元素分類以及插入CDATA和<符號

* 設置模式特性

* 定義並創建命名模板

* 刪除和保留空格

* 基於輸入來改變輸出

* 合並多個樣式單

14.1 何為XSL?

變換和格式兩部分可相互獨立地起作用。例如,變換語言可將XML文檔變換成結構整潔的HTML文件,並且完全忽略XSL格式化對象。Internet Explorer 5.0支持這種XSL樣式,這在第5章已討論過,本章著重討論這種樣式。

此外,以XSL格式化對象編寫的文檔,並非絕對要求在另一個XML文檔上使用XSL變換部分才能產生。例如,很容易想象到這樣的一個轉換器:它是用Java語言寫成的,可讀取TeX或PDF文件,並把這些文件翻譯成XSL格式化對象(盡管直到1999年夏天仍沒有這樣的一種轉換器存在)。

實際上,XSL是兩種語言,而不是一種。第一種語言是變換語言,第二種是格式化語言。變換語言是一種很有用的語言,它與格式化語言無關。它能夠把數據從一種XML表示移到另一種表示,這種功能,使它成為基於XML的電子商務、電子數據交換、元數據交換以及應用於需要在相同數據的不同XML表示之間進行轉換的重要組成部分。由於缺乏對人們要浏覽的顯示器上顯示數據的了解,這些用途還要結合起來使用。它們純粹是用來將數據從一種計算機系統或程序移到另一種計算機系統或程序中。

因此,許多早期的XSL實現都毫無例外地將焦點集中在變換部分,而忽略了格式化對象。這些是不完善的實施方案,但仍然是很有用的。並非所有的數據最終都必須顯示在計算機顯示器上或打印到紙上。

第15章"XSL格式化對象"將涉及XSL格式化語言。

有關XSL警告語

XSL仍然處於開發中。XSL語言在過去發生了根本性的變化,將來肯定會再發生變化。本章是根據1999年4月21日的XSL規范草案(第四稿)寫成的。讀者閱讀此書時,此XSL草案可能已經被取代了,精確的XSL句法將會變化。我希望本章與實際的規范不會相差太大。但是,如果的確有不一致的地方,應將本書中的例子與最新規范進行對比。

糟糕的是,仍然沒有任何軟件能實現1999年4月21日的XSL規范草案(第四稿)的所有內容,甚至不能實現XSL變換的部分。現有的所有產品只能實現當前草案的不同子集。而且,許多產品(包括Internet Explorer 5.0和XT)加入的元素並沒有出現在當前XSL草案規范中。最後一點是,大多數至少要實現部分XSL內容的產品在其可實現的部分中也存在著很嚴重的程序錯誤(bug)。因此,在不同的軟件中,只有廖廖無幾的幾個例子能准確地以相同的方式工作。

當然,隨著此項標准向最後版本改進時,當開發商解決了自己產品中的程序錯誤並實現沒有被實現的內容時,以及當出版的更多軟件支持XSL時,最終這種情況是可以得到修正的。在達到此目的之前,還得面對這樣的選擇:要麼忍痛使用目前不完善的、未完成的XSL,並且試圖避開遇到的所有程序錯誤和疏忽,要麼使用更確定的技術(如CSS),直到XSL更加可靠為止。

14.2 XSL變換概述

在XSL變換中,XSL處理程序讀取XML文檔和XSL樣式單。基於處理程序在XSL樣式單中找到的指令,輸出新的XML文檔。

14.2.1 樹形結構

就像第6章學到的那樣,每個結構整潔的XML文檔都是樹形結構(tree)。樹形結構是一種數據結構,它是由連接起來的節點(node)組成的,這些節點起始於一個稱為根節點(root)的單節點。根節點連接它的子節點,每個子節點可以連接零個或多個它自

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved