XSLT
| 華夏公益教科書使用者認為此頁面應該拆分為更小的頁面,包含更窄的子主題。 您可以透過將此大頁面拆分為更小的頁面來提供幫助。請確保遵循命名策略。將書籍劃分為更小的部分可以提供更多的關注,並允許每個部分做好一件事,這將使每個人受益。 |
| 此頁面已匯入,需要進行去維基化. 書籍應儘可能少地使用維基連結,並且僅用於引用理解內容至關重要的技術或深奧術語。大多數甚至所有維基連結都應簡單地刪除。在頁面去維基化後,請刪除{{dewikify}}。 |
XSLT (可擴充套件樣式表語言轉換) 是一種用於轉換XML 文件為其他 XML 文件(相同XML 架構或不同),或其他物件,例如用於網頁的HTML,或用於其他用途的純文字,或許多其他基於文字的格式(例如RTF 或任何SGML 文件)。
| XSLT 或 XSL? XSLT 檔案的通常 3 個字母副檔名是.xsl,因此,它會導致與 .xls 混淆,.xls 是較舊的 Microsoft Excel 檔案的字尾。 |
| XSLT 或 XSL-FO? XSLT 可用於將 XML 轉換為XSL 格式化物件 (XSL-FO),然後可以將其轉換為PDF、PostScript 和PNG。XSLT 和 XSL-FO 是截然不同的東西。 |
當轉換“XML 到 XML”時,可能會有更多轉換的鏈,當轉換“XML 到物件”時,鏈必須停止(物件是終端)。
有兩個主要的 XSLT 標準組
- XSLT-v1 (舊):於 1999 年 11 月作為W3C 建議釋出。但是,截至 2014 年,XSLT v1.0 仍然被廣泛使用,因為 2.0 和 3.0 在網路瀏覽器或LAMP 等環境中不受原生支援。
- XSLT-v2 和 XSLT-v3 (更新):僅適用於“Java 世界”和一些專有框架,例如 Oracle 或 Altova 的產品。
本華夏公益教科書是關於 XSLT-v1,它擁有更廣泛的使用者群體。
XSLT-v1 解析器(例如libXml2)速度快且穩定。在MVC 上下文中,主要的 XSLT-v1 用途是作為MVC-檢視器進行過濾或渲染,並以最小的處理成本來處理由MVC-建模器生成的 XML。對於“圖靈完備”處理,為了避免遷移到 XSLT-v2 或 XSLT-v3,通常的解決方法是使用嵌入語言的處理,透過註冊函式功能。示例:本華夏公益教科書展示了在 PHP 環境中使用 XSLT 時如何使用註冊函式。
XPath-v1 和 XSLT-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/等手冊本身沒有簡單的解釋來真正捕捉到本質,並且在網路上釋出的帖子似乎也缺少某些細節。
本華夏公益教科書試圖填補這一空白;併為此進行了一系列相關主題的廣泛介紹。這裡提出了兩種主要方式來使用外部函式
- 自由使用:任何函式,內建函式或使用者定義函式,最佳實踐是使用特定的名稱空間,例如 PHP 的“php”或 Python 的“py”。
- 受控使用:一種與語言無關的約定,使用本地標準庫。最佳實踐是使用通用名稱空間,例如“fn”。因此,如果專案從 PHP 更改為 Python,例如,XSLT(或 XPath)保持相同的程式碼和名稱空間。
對於自由使用註冊函式
- PHP:PHP 程式設計/XSL/註冊 PHP 函式
- ...: .. ?? ..
對於受控註冊函式(使用 FN 名稱空間的約定)
- 標準註冊函式:一項建議。