XSL 之於 XML 就像 CSS 之於 HTML。它是指可擴展樣式表語言 (EXtensible Stylesheet Language)。這是一種用於以可讀格式呈現 XML 數據的語言。XSL 實際上包含兩個部分:
* XSLT – 用於轉換 XML 文檔的語言
* XPath – 用於在 XML 文檔中導航的語言
XSLT 是指 XSL 轉換 (XSL Transformation),它是 XSL 最重要的部分。
XSLT 可以將 XML 文檔轉換為其它 XML 文檔、XHTML 輸出或簡單的文本。這通常是通過將每個 XML 元素轉換為 HTML 元素來完成的。由於 XML 標簽是用戶定義的,浏覽器不知道如何解釋或呈現每個標簽,因此必須使用 XSL。XML 標簽的意義是為了方便用戶(而不是計算機)理解。
XSLT 還可以對 XML 樹進行下列操作:
* 添加和刪除元素
* 添加和刪除屬性
* 對元素進行重新排列或排序
* 隱藏或顯示某些元素
* 查找或選擇特定元素
XSL 語法
您可能還記得 XML 概述文章中提到過,所有 XML 文檔都是以 XML 聲明開頭。XSL 樣式表也是一樣。任何 XSL 文檔的第一行實際上都是 XML 聲明:
<?xml version="1.0" encoding="ISO-8859-1"?>
XSL 是否與 XML 相同?
既是又不是。說是,是因為它們遵循相同的語法規則(只有少許差異,下面我將會講到)。說不是,是因為它們的用途不同:XML 用於承載數據,而 XSL 則用於設置數據的格式。
在 XML 聲明之後,就是 XSL 聲明,例如:
<xsl:stylesheet>
或
<xsl:transform>
但是,在大多數實際情況下,XSL 聲明看起來要稍微復雜一些:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
這是因為,根據 W3C 聯盟的建議,它還包含命名空間和 XSL 規范的版本。
XSL 聲明與 XML 聲明的不同之處在於,XML 聲明只寫一行,而且沒有結束標簽,而 XSL 聲明必須包含結束標簽,該標簽表示 XSL 樣式表結束:
</xsl:stylesheet>
請注意,這並不與 XML 語法規則沖突:XSL 樣式表是完全有效的 XML 文檔,因為它有一個根元素,由
在什麼情況下應該使用 XSL?
XSL 在設計時有幾個目標用途,這些用途使它成為某些開發情況下的完美解決方案,而對另一些開發情況則毫無用處。
XSL 專門用於處理 XML 文檔,並且遵循 XML 語法。因此,它只能在支持 XML 的應用程序中與 XML 結合使用。最合適使用 XML 和 XSL 的情況是:Web 門戶、新聞聚合器、社區網站或其它任何需要向各種設備及大量客戶端提供信息的 Web 應用程序。
XSLT 是一種基於模式匹配的語言。它會查找匹配特定條件的節點,然後應用相應的規則。因此,它不具備大多數編程語言的計算能力。例如,XSL 無法在運行時更改變量的值。它不應該用於從使用復雜公式的動態數據源(例如在線商店)來計算值。Web 編程語言更適於此用途。
XSL 不能代替或補充 CSS。它不應(也不能)用於設置 HTML 的樣式。但是,您可以將其用於需要頻繁重新設計可視化效果、頻繁更換布局以及以靈活格式處理數據的網站。
XSL 不是內容管理工具。它不應(也不能)用於更改 XML 文檔的內容或者編輯信息。但是,您可以將 XML 和 XSL 用於需要處理幾種不同格式文檔的內容管理系統。