fbpx
维基百科

XSLT

计算机科学中,可扩展样式表转换语言(英語:Extensible Stylesheet Language Transformations缩写XSLT)是一种樣式轉換標記语言,可以將XML資料檔轉換為另外的XML或其它格式,如HTML網頁,純文字。XSLT最末的T字母表示英语中的“转换”(transformation)。它是XSL规范中的一部分,目前最新的建議版本為XSL 3.0。

XSLT
编程范型声明式同像性
實作者万维网联盟 (W3C)
发行时间1998年,​24年前​(1998
文件扩展名.xslt
網站www.w3.org/TR/xslt-30/
主要實作產品
libxslt英语libxslt, Saxon英语Saxon XSLT, Xalan英语Apache Xalan
啟發語言
DSSSL英语Document Style Semantics and Specification Language

以XSLT進行格式轉換不會變動原始的資料文件;而會以現有資料產生新的內容格式。作為輸入的通常是XML資料檔,或者由支援XQuery和XPath的資料模型處理器,其他來源的資料也能轉換,例如關聯式資料庫表格或地理資訊系統。

XSL规范的另一部分是XSLF(Formatting Objects,代表格式化物件),又称XSL-FO或XSLFO,目前已逐漸被CSS 3.0所取代。XSLT是一種圖靈完備的語言,它可以指定計算機能執行的任何計算。

歷史 编辑

XSLT受到函數式編程語言和字串模式匹配語言(如SNOBOLAWK)的影響。它最直接的前輩是DSSSL,即為SGML的文件樣式描述語言。

  • XSLT 1.0版本:XSLT是二十世紀末全球資訊網協會(W3C)可擴展樣式表語言(XSL)開發工作的一部分,該專案還產出了XSL-FO和XPath。編訂XSLT規範的委員會成員,包括編輯James Clark,具備DSSSL的工作經驗。W3C於1999年11月推薦發表了XSLT 1.0規範。
  • XSLT 2.0:XSL工作群組在2001年嘗試新創1.1版本中斷之後,與XQuery工作群組合作,產出了根基於XML綱要之上的XPath 2.0,具有更豐富的資料模型和型別系統;而XSLT 2.0是由Michael Kay主導開發的,在2007年1月成為推薦狀態。然而至2010年,XSLT 1.0仍然被廣泛使用,因為用戶端的網路瀏覽器尚未內建支援XSLT 2.0,或因為處於LAMP架構環境中。
  • XSLT 3.0:於2017年6月8日成為W3C推薦書。主要新功能有:
    • 流轉換:在以前版本中,整個輸入資料檔必須在處理之前被讀入記憶體,在處理完成之前無法寫到輸出(儘管Saxon有流擴展)。這個工作草案允許XML流,這對於處理記憶體容納不下的過大資料檔,或者在XML管道中連串變換時,是有用處的。
    • 改進大型樣式表的模組化。
    • 改進動態錯誤的處理,例如xsl:try指令。
    • 函數可以作為其他(高階)函數的參數。

設計模型與處理 编辑

 
XSL轉換處理程序示意圖

XSLT處理器會取用一或多個XML源資料檔,加上一或多個XSLT樣式表,並處理它們以產生輸出文件。與廣泛實作的指令式編程語言(例如C編程語言)相反,XSLT是宣告式的。基本處理的範式是模式配比。模板規則只定義如何處理特定XPath模式相符的節點,而不是列出在具有狀態的環境中執行的一系列動作;處理器在遇到某一模式符合時,那麼模板規則的內容就包含了,以函數式語句評估的直接成果:即結果樹,它是處理器輸出的基礎。

處理器遵循固定的算法。首先,假設樣式表已經讀取和準備好了,處理器從輸入的XML資料檔建立來源代碼樹。然後處理來源樹的根節點,在樣式表中找到該節點相符的最佳模板,並評估模板的內容。每一個模板中的指令通常要求處理器在結果樹中產生節點,或者與根節點相同的方式,處理來源樹中的其它節點。從結果樹中取得輸出。

處理器實作 编辑

  • Altova RaptorXML 伺服器:支援XSLT 1.0和2.0的跨平台引擎,大部分XPath 3.0,以及XSLT 3.0工作草案中的一些功能;也有XQuery支援。允許指令列操作以及利用COM,Java和.NET的介面,還包括一個內置的HTTP伺服器。
  • Exselt:在.NET框架上以F#編寫成的XSLT 3.0流處理器。完全支援XSLT 3.0草案,XPath 3.0推薦標準和XDM 3.0推薦標準。
  • libxslt是根據MIT授權發佈的開放函式庫,可商業化且重複使用。它以libxml為基礎並以C語言實作,有快速的效能和可移植性。它支援XSLT 1.0和EXSLT擴展。
    • 在指令列中可執行xsltproc,它包含在macOS和許多Linux版本中,在微軟Windows系統則透過Cygwin使用。
    • Safari瀏覽器的WebKit引擎,和Chrome和Blink佈局引擎,都利用libxslt函式庫進行XSL轉換。
    • 在Python、Perl、Ruby、PHP、Common Lisp、Tcl和C++等編程語言中也有相對的綁定。
  • MSXML和.NET。MSXML包括XSLT 1.0處理器。從MSXML 4.0它包括指令列的工具程序msxsl.exe
  • Saxon:XSLT 3.0和XQuery 3.1處理器,有獨立操作的開源和專有版本,也提供了可用於Java,JavaScript和.NET的函式庫。
  • QuiXSLT:由Innovimax和INRIA以Java編程語言實作的XSLT 3.0處理器。
  • Xalan:來自Apache Software Foundation的開源XSLT 1.0處理器,可以獨立使用,也適用於Java和C++。
  • 網路瀏覽器:目前Safari,Chrome,Firefox,Opera 和Internet Explorer這些網路瀏覽器都只支援XSLT 1.0;而如果以Saxon-CE和Frameless這樣的第三方協力產品,則可支援XSLT 2.0。瀏覽器有能力執行XML文件的即時轉換,並在其視窗中顯示輸出。轉換方式有將XSL嵌入到XML資料檔中,或在XML資料檔中以匯入XSL的指示來完成。由於Chrome的保守安全策略,可能無法使用匯入XSL的指示。
  • XMLStarlet是“可用於轉換、查詢、驗證和編輯XML資料檔的一組指令列工具程序。它可以將XSLT樣式表應用於XML資料檔”,而且不需要Java。它使用libxslt支援XSLT 1.0。
  • Xuriella和Plexippus-xpath是用Common Lisp編程語言實作的XSLT 1.0處理器。


效能 编辑

早期大多數的XSLT處理器都是直譯器。近來位元組碼越來越普遍,使用可移植的中間語言(如Java位元組碼.NET中間語言)作為目標。然而,即使是直譯器的成品通常也提供單獨的分析和執行階段,允許在記憶體中建立優化的表達式樹,並可重複使用以執行多重轉換。在線上發行應用程序時,這方式有顯著的性能優勢,其中同樣的轉換每秒可多次應用在不同的來源檔之上。這種分離處理反映在XSLT處理器的應用編程介面(如JAXP)的設計中。

早期XSLT處理器很少被優化過。讀取的樣式表成為文檔物件模型,而XSLT處理器會直接對它們產生作用。XPath引擎也沒有被優化過。但是漸增地,XSLT處理器利用了函數式編程和資料庫查詢語言中發現的優化技術,例如表達式樹的靜態重寫(例如,將計算移出迴圈),以及惰性的串流評估來減少過程中所佔記憶體的足跡(允許處理器對子表達式求值時,“提早退出”而不必執行全部,例如following-sibling::*[1])。許多處理器還使用比一般DOM實作更有效率(在空間和時間上)的樹表達式。

2014年6月,Debbie Lockett和Michael Kay推出了一個開放源碼的標竿測試框架,名稱為XT-Speedo。

XPath 编辑

XSLT使用XPath來選取資料來源樹的節點集合,並執行相關的轉換運算。XPath還提供了一系列功能,XSLT則將其功能進一步強化。在3.0版本前的XSLT,使用的XPath版本都是相對應的。到了XSLT 3.0版本則將與XPath 3.0或3.1 配合使用。在之前的版本,XSLT和XPath規範在同一天發佈。然而到了XSLT 3.0版本,它不再和XPath的版本同步;XPath 3.0於2014年4月成為推薦書,接著是2017年2月的XPath 3.1;於2017年6月時才推出了XSLT 3.0版本。

與 XQuery 比較 编辑

XSLT與XQuery的功能之間有互相重疊的部份,XQuery最初被認為是大型XML資料檔集合的查詢語言。XSLT 2.0和XQuery 1.0標準是由W3C內的不同工作群組開發的,它們彼此合作以確保處理作法可以共通地適用。它們都使用相同的資料模型,型別系統和函數庫,並且都包括了XPath 2.0作為子語言。

但這兩種語言因服務於不同社群的需求,而根植於不同的傳統上。XSLT主要被認為是一種樣式語言,主要目標是在網路(當作網頁模板)、在螢幕或紙張,呈現給人類讀者觀看的XML。而XQuery則類比為傳統中的資料庫查詢語言。因為這兩種語言起源於不同的社群,XSLT偏重於處理彈性的敘述式資料應用上,而XQuery則偏重在資料處理方面,例如執行關係聯結的操作。

媒體類型 编辑

<output>元素可以設定媒體類型的屬性media-type,將結果輸出為該媒體類型(或MIME),例如:
<xsl:output output =“xml”media-type =“application/xml“/>

長時間以來在網際網路上沒有XSLT的註冊媒體類型,text/xsl為實用上的標準。XSLT 1.0規範建議泛用化的屬性text/xmlapplication/xml,但其中沒有指出媒體類型的屬性值應當如何使用。隨著XSLT 2.0的發表,W3C推薦使用MIME媒體類型application/xslt+xml,之後這種類型已在IANA註冊。

1.0之前的XSLT工作草案在範例中使用了text/xsl,微軟在Internet Explorer和MSXML產品中採用這一媒體類型,而其他瀏覽器的xml樣式表處理指令也廣泛的認可。所以在實作中,瀏覽器使用者若想以處理指令來轉換XML,應使用這種未註冊的媒體類型。

範例 编辑

關於分組問題請參閱XSLT/Muenchian分組。以下是當作範例中輸入的XML文檔內容:

<?xml version="1.0" ?> <persons>  <person username="JS1">  <name>John</name>  <family-name>Smith</family-name>  </person>  <person username="MI1">  <name>Morka</name>  <family-name>Ismincius</family-name>  </person> </persons> 

例一(從XSL轉換為XML) 编辑

以下XSLT樣式表提供了轉換 XML 文檔的模板:

<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">  <xsl:output method="xml" indent="yes"/>  <xsl:template match="/persons">  <root>  <xsl:apply-templates select="person"/>  </root>  </xsl:template>  <xsl:template match="person">  <name username="{@username}">  <xsl:value-of select="name" />  </name>  </xsl:template> </xsl:stylesheet> 

它的評估結果是一個新的XML文檔,有另一種結構:

<?xml version="1.0" encoding="UTF-8"?> <root>  <name username="JS1">John</name>  <name username="MI1">Morka</name> </root> 

例二(從XML轉換為XHTML) 编辑

如應用以下XSLT樣式表:

<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet  version="1.0"  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  xmlns="http://www.w3.org/1999/xhtml">  <xsl:output method="xml" indent="yes" encoding="UTF-8"/>  <xsl:template match="/persons">  <html>  <head> <title>Testing XML Example</title> </head>  <body>  <h1>Persons</h1>  <ul>  <xsl:apply-templates select="person">  <xsl:sort select="family-name" />  </xsl:apply-templates>  </ul>  </body>  </html>  </xsl:template>  <xsl:template match="person">  <li>  <xsl:value-of select="family-name"/><xsl:text>, </xsl:text><xsl:value-of select="name"/>  </li>  </xsl:template> </xsl:stylesheet> 

將XML輸入文件轉換則產生如下XHTML(為了清楚起見,空格已被調整):

<?xml version="1.0" encoding="UTF-8"?> <html xmlns="http://www.w3.org/1999/xhtml">  <head> <title>Testing XML Example</title> </head>  <body>  <h1>Persons</h1>  <ul>  <li>Ismincius, Morka</li>  <li>Smith, John</li>  </ul>  </body> </html> 

網路瀏覽器中顯示時,此XHTML會產生如下的輸出。

 
Rendered XHTML generated from an XML input file and an XSLT transformation.

為了使網路瀏覽器能夠自動將XSL轉換應用於顯示的XML文檔,XML的樣式表處理指令可插入XML中。因此若上例二中的樣式表為“example2.xsl”,則以下指令將把它添加到原來輸入的XML中:

<?xml-stylesheet href="example2.xsl" type="text/xsl" ?> 

本範例中,根據W3C規範(其類型應為text/xml),在技術上text/xsl類型是不正確的,但它是2009年以來唯一在瀏覽器之間,有廣泛支援的媒體類型。

参考文献 编辑

外部連結 编辑

具体应用

参见 编辑

xslt, 在计算机科学中, 可扩展样式表转换语言, 英語, extensible, stylesheet, language, transformations, 缩写, 是一种樣式轉換標記语言, 可以將xml資料檔轉換為另外的xml或其它格式, 如html網頁, 純文字, 最末的t字母表示英语中的, 转换, transformation, 它是xsl规范中的一部分, 目前最新的建議版本為xsl, 编程范型声明式, 同像性實作者万维网联盟, 发行时间1998年, 24年前, 1998, 文件扩展名, xslt網站w. 在计算机科学中 可扩展样式表转换语言 英語 Extensible Stylesheet Language Transformations 缩写XSLT 是一种樣式轉換標記语言 可以將XML資料檔轉換為另外的XML或其它格式 如HTML網頁 純文字 XSLT最末的T字母表示英语中的 转换 transformation 它是XSL规范中的一部分 目前最新的建議版本為XSL 3 0 XSLT编程范型声明式 同像性實作者万维网联盟 W3C 发行时间1998年 24年前 1998 文件扩展名 xslt網站www wbr w3 wbr org wbr TR wbr xslt 30 wbr 主要實作產品libxslt 英语 libxslt Saxon 英语 Saxon XSLT Xalan 英语 Apache Xalan 啟發語言DSSSL 英语 Document Style Semantics and Specification Language 以XSLT進行格式轉換不會變動原始的資料文件 而會以現有資料產生新的內容格式 作為輸入的通常是XML資料檔 或者由支援XQuery和XPath的資料模型處理器 其他來源的資料也能轉換 例如關聯式資料庫表格或地理資訊系統 XSL规范的另一部分是XSLF Formatting Objects 代表格式化物件 又称XSL FO或XSLFO 目前已逐漸被CSS 3 0所取代 XSLT是一種圖靈完備的語言 它可以指定計算機能執行的任何計算 目录 1 歷史 2 設計模型與處理 3 處理器實作 3 1 效能 4 XPath 5 與 XQuery 比較 6 媒體類型 7 範例 7 1 例一 從XSL轉換為XML 7 2 例二 從XML轉換為XHTML 8 参考文献 9 外部連結 10 参见歷史 编辑XSLT受到函數式編程語言和字串模式匹配語言 如SNOBOL和AWK 的影響 它最直接的前輩是DSSSL 即為SGML的文件樣式描述語言 XSLT 1 0版本 XSLT是二十世紀末全球資訊網協會 W3C 可擴展樣式表語言 XSL 開發工作的一部分 該專案還產出了XSL FO和XPath 編訂XSLT規範的委員會成員 包括編輯James Clark 具備DSSSL的工作經驗 W3C於1999年11月推薦發表了XSLT 1 0規範 XSLT 2 0 XSL工作群組在2001年嘗試新創1 1版本中斷之後 與XQuery工作群組合作 產出了根基於XML綱要之上的XPath 2 0 具有更豐富的資料模型和型別系統 而XSLT 2 0是由Michael Kay主導開發的 在2007年1月成為推薦狀態 然而至2010年 XSLT 1 0仍然被廣泛使用 因為用戶端的網路瀏覽器尚未內建支援XSLT 2 0 或因為處於LAMP架構環境中 XSLT 3 0 於2017年6月8日成為W3C推薦書 主要新功能有 流轉換 在以前版本中 整個輸入資料檔必須在處理之前被讀入記憶體 在處理完成之前無法寫到輸出 儘管Saxon有流擴展 這個工作草案允許XML流 這對於處理記憶體容納不下的過大資料檔 或者在XML管道中連串變換時 是有用處的 改進大型樣式表的模組化 改進動態錯誤的處理 例如xsl try指令 函數可以作為其他 高階 函數的參數 設計模型與處理 编辑 nbsp XSL轉換處理程序示意圖XSLT處理器會取用一或多個XML源資料檔 加上一或多個XSLT樣式表 並處理它們以產生輸出文件 與廣泛實作的指令式編程語言 例如C編程語言 相反 XSLT是宣告式的 基本處理的範式是模式配比 模板規則只定義如何處理特定XPath模式相符的節點 而不是列出在具有狀態的環境中執行的一系列動作 處理器在遇到某一模式符合時 那麼模板規則的內容就包含了 以函數式語句評估的直接成果 即結果樹 它是處理器輸出的基礎 處理器遵循固定的算法 首先 假設樣式表已經讀取和準備好了 處理器從輸入的XML資料檔建立來源代碼樹 然後處理來源樹的根節點 在樣式表中找到該節點相符的最佳模板 並評估模板的內容 每一個模板中的指令通常要求處理器在結果樹中產生節點 或者與根節點相同的方式 處理來源樹中的其它節點 從結果樹中取得輸出 處理器實作 编辑Altova RaptorXML 伺服器 支援XSLT 1 0和2 0的跨平台引擎 大部分XPath 3 0 以及XSLT 3 0工作草案中的一些功能 也有XQuery支援 允許指令列操作以及利用COM Java和 NET的介面 還包括一個內置的HTTP伺服器 Exselt 在 NET框架上以F 編寫成的XSLT 3 0流處理器 完全支援XSLT 3 0草案 XPath 3 0推薦標準和XDM 3 0推薦標準 libxslt是根據MIT授權發佈的開放函式庫 可商業化且重複使用 它以libxml為基礎並以C語言實作 有快速的效能和可移植性 它支援XSLT 1 0和EXSLT擴展 在指令列中可執行xsltproc 它包含在macOS和許多Linux版本中 在微軟Windows系統則透過Cygwin使用 Safari瀏覽器的WebKit引擎 和Chrome和Blink佈局引擎 都利用libxslt函式庫進行XSL轉換 在Python Perl Ruby PHP Common Lisp Tcl和C 等編程語言中也有相對的綁定 MSXML和 NET MSXML包括XSLT 1 0處理器 從MSXML 4 0它包括指令列的工具程序msxsl exe Saxon XSLT 3 0和XQuery 3 1處理器 有獨立操作的開源和專有版本 也提供了可用於Java JavaScript和 NET的函式庫 QuiXSLT 由Innovimax和INRIA以Java編程語言實作的XSLT 3 0處理器 Xalan 來自Apache Software Foundation的開源XSLT 1 0處理器 可以獨立使用 也適用於Java和C 網路瀏覽器 目前Safari Chrome Firefox Opera 和Internet Explorer這些網路瀏覽器都只支援XSLT 1 0 而如果以Saxon CE和Frameless這樣的第三方協力產品 則可支援XSLT 2 0 瀏覽器有能力執行XML文件的即時轉換 並在其視窗中顯示輸出 轉換方式有將XSL嵌入到XML資料檔中 或在XML資料檔中以匯入XSL的指示來完成 由於Chrome的保守安全策略 可能無法使用匯入XSL的指示 XMLStarlet是 可用於轉換 查詢 驗證和編輯XML資料檔的一組指令列工具程序 它可以將XSLT樣式表應用於XML資料檔 而且不需要Java 它使用libxslt支援XSLT 1 0 Xuriella和Plexippus xpath是用Common Lisp編程語言實作的XSLT 1 0處理器 效能 编辑 早期大多數的XSLT處理器都是直譯器 近來位元組碼越來越普遍 使用可移植的中間語言 如Java位元組碼或 NET中間語言 作為目標 然而 即使是直譯器的成品通常也提供單獨的分析和執行階段 允許在記憶體中建立優化的表達式樹 並可重複使用以執行多重轉換 在線上發行應用程序時 這方式有顯著的性能優勢 其中同樣的轉換每秒可多次應用在不同的來源檔之上 這種分離處理反映在XSLT處理器的應用編程介面 如JAXP 的設計中 早期XSLT處理器很少被優化過 讀取的樣式表成為文檔物件模型 而XSLT處理器會直接對它們產生作用 XPath引擎也沒有被優化過 但是漸增地 XSLT處理器利用了函數式編程和資料庫查詢語言中發現的優化技術 例如表達式樹的靜態重寫 例如 將計算移出迴圈 以及惰性的串流評估來減少過程中所佔記憶體的足跡 允許處理器對子表達式求值時 提早退出 而不必執行全部 例如following sibling 1 許多處理器還使用比一般DOM實作更有效率 在空間和時間上 的樹表達式 2014年6月 Debbie Lockett和Michael Kay推出了一個開放源碼的標竿測試框架 名稱為XT Speedo XPath 编辑XSLT使用XPath來選取資料來源樹的節點集合 並執行相關的轉換運算 XPath還提供了一系列功能 XSLT則將其功能進一步強化 在3 0版本前的XSLT 使用的XPath版本都是相對應的 到了XSLT 3 0版本則將與XPath 3 0或3 1 配合使用 在之前的版本 XSLT和XPath規範在同一天發佈 然而到了XSLT 3 0版本 它不再和XPath的版本同步 XPath 3 0於2014年4月成為推薦書 接著是2017年2月的XPath 3 1 於2017年6月時才推出了XSLT 3 0版本 與 XQuery 比較 编辑XSLT與XQuery的功能之間有互相重疊的部份 XQuery最初被認為是大型XML資料檔集合的查詢語言 XSLT 2 0和XQuery 1 0標準是由W3C內的不同工作群組開發的 它們彼此合作以確保處理作法可以共通地適用 它們都使用相同的資料模型 型別系統和函數庫 並且都包括了XPath 2 0作為子語言 但這兩種語言因服務於不同社群的需求 而根植於不同的傳統上 XSLT主要被認為是一種樣式語言 主要目標是在網路 當作網頁模板 在螢幕或紙張 呈現給人類讀者觀看的XML 而XQuery則類比為傳統中的資料庫查詢語言 因為這兩種語言起源於不同的社群 XSLT偏重於處理彈性的敘述式資料應用上 而XQuery則偏重在資料處理方面 例如執行關係聯結的操作 媒體類型 编辑 lt output gt 元素可以設定媒體類型的屬性media type 將結果輸出為該媒體類型 或MIME 例如 lt xsl output output xml media type application xml gt 長時間以來在網際網路上沒有XSLT的註冊媒體類型 text xsl為實用上的標準 XSLT 1 0規範建議泛用化的屬性text xml和application xml 但其中沒有指出媒體類型的屬性值應當如何使用 隨著XSLT 2 0的發表 W3C推薦使用MIME媒體類型application xslt xml 之後這種類型已在IANA註冊 1 0之前的XSLT工作草案在範例中使用了text xsl 微軟在Internet Explorer和MSXML產品中採用這一媒體類型 而其他瀏覽器的xml樣式表處理指令也廣泛的認可 所以在實作中 瀏覽器使用者若想以處理指令來轉換XML 應使用這種未註冊的媒體類型 範例 编辑關於分組問題請參閱XSLT Muenchian分組 以下是當作範例中輸入的XML文檔內容 lt xml version 1 0 gt lt persons gt lt person username JS1 gt lt name gt John lt name gt lt family name gt Smith lt family name gt lt person gt lt person username MI1 gt lt name gt Morka lt name gt lt family name gt Ismincius lt family name gt lt person gt lt persons gt 例一 從XSL轉換為XML 编辑 以下XSLT樣式表提供了轉換 XML 文檔的模板 lt xml version 1 0 encoding UTF 8 gt lt xsl stylesheet xmlns xsl http www w3 org 1999 XSL Transform version 1 0 gt lt xsl output method xml indent yes gt lt xsl template match persons gt lt root gt lt xsl apply templates select person gt lt root gt lt xsl template gt lt xsl template match person gt lt name username username gt lt xsl value of select name gt lt name gt lt xsl template gt lt xsl stylesheet gt 它的評估結果是一個新的XML文檔 有另一種結構 lt xml version 1 0 encoding UTF 8 gt lt root gt lt name username JS1 gt John lt name gt lt name username MI1 gt Morka lt name gt lt root gt 例二 從XML轉換為XHTML 编辑 如應用以下XSLT樣式表 lt xml version 1 0 encoding UTF 8 gt lt xsl stylesheet version 1 0 xmlns xsl http www w3 org 1999 XSL Transform xmlns http www w3 org 1999 xhtml gt lt xsl output method xml indent yes encoding UTF 8 gt lt xsl template match persons gt lt html gt lt head gt lt title gt Testing XML Example lt title gt lt head gt lt body gt lt h1 gt Persons lt h1 gt lt ul gt lt xsl apply templates select person gt lt xsl sort select family name gt lt xsl apply templates gt lt ul gt lt body gt lt html gt lt xsl template gt lt xsl template match person gt lt li gt lt xsl value of select family name gt lt xsl text gt lt xsl text gt lt xsl value of select name gt lt li gt lt xsl template gt lt xsl stylesheet gt 將XML輸入文件轉換則產生如下XHTML 為了清楚起見 空格已被調整 lt xml version 1 0 encoding UTF 8 gt lt html xmlns http www w3 org 1999 xhtml gt lt head gt lt title gt Testing XML Example lt title gt lt head gt lt body gt lt h1 gt Persons lt h1 gt lt ul gt lt li gt Ismincius Morka lt li gt lt li gt Smith John lt li gt lt ul gt lt body gt lt html gt 網路瀏覽器中顯示時 此XHTML會產生如下的輸出 nbsp Rendered XHTML generated from an XML input file and an XSLT transformation 為了使網路瀏覽器能夠自動將XSL轉換應用於顯示的XML文檔 XML的樣式表處理指令可插入XML中 因此若上例二中的樣式表為 example2 xsl 則以下指令將把它添加到原來輸入的XML中 lt xml stylesheet href example2 xsl type text xsl gt 本範例中 根據W3C規範 其類型應為text xml 在技術上text xsl類型是不正確的 但它是2009年以來唯一在瀏覽器之間 有廣泛支援的媒體類型 参考文献 编辑外部連結 编辑XSLT 1 0 W3C Recommendation 页面存档备份 存于互联网档案馆 XSLT 2 0 W3C Working Draft 页面存档备份 存于互联网档案馆 具体应用Xalan Java 页面存档备份 存于互联网档案馆 Xalan C 页面存档备份 存于互联网档案馆 libxslt 页面存档备份 存于互联网档案馆 the XSLT C library for Gnome Sablotron SAXON 页面存档备份 存于互联网档案馆 by Michael Kay XT by James Clark Microsoft XSLT engine Mozilla has native XSLT support 页面存档备份 存于互联网档案馆 X Smiles 页面存档备份 存于互联网档案馆 has native XSLT support lt oXygen gt XSLT editor and debugger 页面存档备份 存于互联网档案馆 参见 编辑XML XSL XPath XSLF 取自 https zh wikipedia org w index php title XSLT amp oldid 71749944, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。