跳轉到內容

XSLT

0% developed
來自華夏公益教科書

XSLT (可擴充套件樣式表語言轉換) 是一種用於轉換XML 文件為其他 XML 文件(相同XML 架構或不同),或其他物件,例如用於網頁的HTML,或用於其他用途的純文字,或許多其他基於文字的格式(例如RTF 或任何SGML 文件)。

XSLT 或 XSL?
XSLT 檔案的通常 3 個字母副檔名是.xsl,因此,它會導致與 .xls 混淆,.xls 是較舊的 Microsoft Excel 檔案的字尾。
XSLT 或 XSL-FO?
XSLT 可用於將 XML 轉換為XSL 格式化物件 (XSL-FO),然後可以將其轉換為PDFPostScriptPNG。XSLT 和 XSL-FO 是截然不同的東西。

當轉換“XML 到 XML”時,可能會有更多轉換的鏈,當轉換“XML 到物件”時,必須停止(物件是終端)。

有兩個主要的 XSLT 標準組

  • XSLT-v1 (舊):於 1999 年 11 月作為W3C 建議釋出。但是,截至 2014 年,XSLT v1.0 仍然被廣泛使用,因為 2.0 和 3.0 在網路瀏覽器LAMP 等環境中不受原生支援。
  • XSLT-v2XSLT-v3 (更新):僅適用於“Java 世界”和一些專有框架,例如 Oracle 或 Altova 的產品。

華夏公益教科書是關於 XSLT-v1,它擁有更廣泛的使用者群體。

XSLT-v1 解析器(例如libXml2)速度快且穩定。在MVC 上下文中,主要的 XSLT-v1 用途是作為MVC-檢視器進行過濾或渲染,並以最小的處理成本來處理由MVC-建模器生成的 XML。對於“圖靈完備”處理,為了避免遷移到 XSLT-v2 或 XSLT-v3,通常的解決方法是使用嵌入語言的處理,透過註冊函式功能。示例:本華夏公益教科書展示了在 PHP 環境中使用 XSLT 時如何使用註冊函式

註冊函式

[編輯 | 編輯原始碼]

XPath-v1XSLT-v1 是基本標準,存在於幾乎所有 XML 應用程式中,以及許多開放平臺瀏覽器(Firefox、Chrome 等)、行動式系統(如 ANDROID)、桌面系統(如 UBUNTU 或 Windows)、資料庫(例如 PostgreSQL、MySQL 等)以及其他系統中。

但 XPath-v1 和 XSLT-v1 在處理能力方面受到限制。一個好的選擇是使用外部函式,這些函式可以在 XPath 或 XSLT 解析器中註冊。此功能被稱為註冊函式

註冊函式對於編寫良好的 XPath-v1 和 XSLT-v1 應用程式至關重要,但很少得到很好的解釋:要增強處理能力,您需要了解註冊函式,其用途和確切的使用場景。

使用 XSLT 或 XPath 解析器的程式語言(例如 PHP)或代理(例如 網路瀏覽器)可以被呼叫回來以提供其內部函式(例如 瀏覽器的 Javascript 函式或 PHP 的函式)。

註冊函式沒有得到很好的文件記錄。W3C 標準沒有定義所有細節,也沒有提供“註冊函式教程”。

PHP/Python/Javascript/等手冊本身沒有簡單的解釋來真正捕捉到本質,並且在網路上釋出的帖子似乎也缺少某些細節。

本華夏公益教科書試圖填補這一空白;併為此進行了一系列相關主題的廣泛介紹。這裡提出了兩種主要方式來使用外部函式

  1. 自由使用:任何函式,內建函式或使用者定義函式,最佳實踐是使用特定的名稱空間,例如 PHP 的“php”或 Python 的“py”。
  2. 受控使用:一種與語言無關的約定,使用本地標準庫。最佳實踐是使用通用名稱空間,例如“fn”。因此,如果專案從 PHP 更改為 Python,例如,XSLT(或 XPath)保持相同的程式碼和名稱空間。
[編輯 | 編輯原始碼]

對於自由使用註冊函式

對於受控註冊函式(使用 FN 名稱空間的約定)

華夏公益教科書