精品免费在线观看-精品欧美-精品欧美成人bd高清在线观看-精品欧美高清不卡在线-精品欧美日韩一区二区

17站長網(wǎng)

17站長網(wǎng) 首頁 編程教程XSLT教程

XSLT教程

XSLT教程

在計算機科學中,可擴展樣式表轉(zhuǎn)換語言(英語:Extensible Stylesheet Language Transformations,縮寫XSLT)是一種樣式轉(zhuǎn)換標記語言,可以將XML數(shù)據(jù)檔轉(zhuǎn)換為另外的XML或其它格式,如HTML網(wǎng)頁,純文字。XSLT最末的T字母表示英語中的“轉(zhuǎn)換”(transformation)。它是XSL規(guī)范中的一部分,最新的建議版本為XSL 3.0。

通常將XSLT稱為可擴展樣式表語言轉(zhuǎn)換(EXtensible Stylesheet Language Transformation)是一種將XML文檔轉(zhuǎn)換為其他格式(如XHTML)的方法。 本教程介紹了XSLT的基礎知識,包含討論XSLT的所有基本組件以及示例。

以XSLT進行格式轉(zhuǎn)換并不會變動原始的數(shù)據(jù)文件;而會以現(xiàn)有數(shù)據(jù)產(chǎn)生新的內(nèi)容格式。作為輸入的通常是XML數(shù)據(jù)檔,或者由支持XQuery和XPath的數(shù)據(jù)模型處理器,其它來源的數(shù)據(jù)也能被轉(zhuǎn)換,例如關系數(shù)據(jù)庫表格或地理信息系統(tǒng)。

XSL規(guī)范的另外一部分是XSLF(Formatting Objects,代表格式化對象),又稱XSL-FO或XSLFO,已逐漸被CSS 3.0所取代。XSLT是一種圖靈完備的語言,它可以指定計算機能運行的任何計算。

XSLT歷史

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

  • XSLT 1.0版本:XSLT是二十世紀末萬維網(wǎng)聯(lián)盟(W3C)可擴展樣式表語言(XSL)開發(fā)工作的一部分,該項目還產(chǎn)出了XSL-FO和XPath。編訂XSLT規(guī)范的委員會成員,包括編輯James Clark,具備DSSSL的工作經(jīng)驗。W3C于1999年11月推薦發(fā)表了XSLT 1.0規(guī)范。

  • XSLT 2.0:XSL工作組在2001年嘗試新創(chuàng)1.1版本中斷之后,與XQuery工作組合作,產(chǎn)出了根基于XML綱要之上的XPath 2.0,具有更豐富的數(shù)據(jù)模型和類型系統(tǒng);而XSLT 2.0是由Michael Kay主導開發(fā)的,在2007年1月成為推薦狀態(tài)。然而至2010年,XSLT 1.0仍然被廣泛使用,因為客戶端的網(wǎng)絡瀏覽器尚未內(nèi)置支持XSLT 2.0,或因為處于LAMP架構(gòu)環(huán)境中。

  • XSLT 3.0:于2017年6月8日成為W3C推薦書。主要新功能有:

    • 流轉(zhuǎn)換:在以前版本中,整個輸入數(shù)據(jù)檔必須在處理之前被讀入內(nèi)存,在處理完成之前無法寫到輸出(盡管Saxon有流擴展)。這個工作草案允許XML流,這對于處理內(nèi)存容納不下的過大數(shù)據(jù)檔,或者在XML管道中連串變換時,是有用處的。

    • 改進大型樣式表的模塊化。

    • 改進動態(tài)錯誤的處理,例如xsl:try指令。

    • 函數(shù)可以作為其它(高階)函數(shù)的參數(shù)。

設計模型與處理

XSLT處理器會取用一或多個XML源數(shù)據(jù)檔,加上一或多個XSLT樣式表,并處理它們以產(chǎn)生輸出文件。與廣泛實現(xiàn)的指令式編程語言(例如C編程語言)相反,XSLT是宣告式的。基本處理的范式是模式配比。模板規(guī)則只定義如何處理特定XPath模式相符的節(jié)點,而不是列出在具有狀態(tài)的環(huán)境中運行的一系列動作;處理器在遇到某一模式匹配時,那么模板規(guī)則的內(nèi)容就包含了,以函數(shù)式語句評估的直接成果:即結(jié)果樹,它是處理器輸出的基礎。

處理器遵循固定的算法。首先,假設樣式表已經(jīng)讀取和準備好了,處理器從輸入的XML數(shù)據(jù)檔創(chuàng)建來源代碼樹。然后處理來源樹的根節(jié)點,在樣式表中找到該節(jié)點相符的最佳模板,并評估模板的內(nèi)容。每一個模板中的指令通常要求處理器在結(jié)果樹中產(chǎn)生節(jié)點,或者與根節(jié)點相同的方式,處理來源樹中的其它節(jié)點。從結(jié)果樹中獲取輸出。

處理器實現(xiàn)

  • Altova RaptorXML 服務器:支持XSLT 1.0和2.0的跨平臺引擎,大部分XPath 3.0,以及XSLT 3.0工作草案中的一些功能;也有XQuery支持。允許指令列操作以及利用COM,Java和.NET的接口,并且還包括一個內(nèi)置的HTTP服務器。

  • Exselt:在.NET框架上以F#編寫成的XSLT 3.0流處理器。完全支持XSLT 3.0草案,XPath 3.0推薦標準和XDM 3.0推薦標準。

  • libxslt是根據(jù)MIT授權(quán)發(fā)布的開放庫,可商業(yè)化且重復使用。它以libxml為基礎并以C語言實現(xiàn),有快速的性能和可移植性。它支持XSLT 1.0和EXSLT擴展。

    • 在指令列中可執(zhí)行xsltproc,它包含在macOS和許多Linux版本中,在微軟Windows系統(tǒng)則透過Cygwin使用。

    • Safari瀏覽器的WebKit引擎,和Chrome和Blink布局引擎,都利用libxslt庫進行XSL轉(zhuǎn)換。

    • 在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編程語言實現(xiàn)的XSLT 3.0處理器。

  • Xalan:來自Apache Software Foundation的開源XSLT 1.0處理器,可以獨立使用,也適用于Java和C++。

  • 網(wǎng)絡瀏覽器:Safari,Chrome,F(xiàn)irefox,Opera 和Internet Explorer這些網(wǎng)絡瀏覽器都只支持XSLT 1.0;而如果以Saxon-CE和Frameless這樣的第三方協(xié)力產(chǎn)品,則可支持XSLT 2.0。瀏覽器有能力運行XML文件的即時轉(zhuǎn)換,并在其視窗中顯示輸出。轉(zhuǎn)換方式有將XSL嵌入到XML數(shù)據(jù)檔中,或在XML數(shù)據(jù)檔中以導入XSL的指示來完成。由于Chrome的保守安全策略,可能無法使用導入XSL的指示。

  • XMLStarlet是“可用于轉(zhuǎn)換、查詢、驗證和編輯XML數(shù)據(jù)檔的一組指令列工具程序。它可以將XSLT樣式表應用于XML數(shù)據(jù)檔”,而且不需要Java。它使用libxslt支持XSLT 1.0。 

  • Xuriella和Plexippus-xpath是用Common Lisp編程語言實現(xiàn)的XSLT 1.0處理器。

XSLT性能

早期大多數(shù)的XSLT處理器都是解釋器。近來字節(jié)碼越來越普遍,使用可移植的中間語言(如Java字節(jié)碼或.NET中間語言)作為目標。然而,即使是解釋器的成品通常也提供單獨的分析和運行階段,允許在內(nèi)存中創(chuàng)建優(yōu)化的表達式樹,并可重復使用以運行多重轉(zhuǎn)換。在線上發(fā)行應用程序時,這方式有顯著的性能優(yōu)勢,其中同樣的轉(zhuǎn)換每秒可多次應用在不同的來源檔之上。這種分離處理反映在XSLT處理器的應用編程接口(如JAXP)的設計中。

早期XSLT處理器很少被優(yōu)化過。讀取的樣式表成為文檔對象模型,而XSLT處理器會直接對它們產(chǎn)生作用。XPath引擎也沒有被優(yōu)化過。但是漸增地,XSLT處理器利用了函數(shù)式編程和數(shù)據(jù)庫查詢語言中發(fā)現(xiàn)的優(yōu)化技術,例如表達式樹的靜態(tài)重寫(例如,將計算移出循環(huán)),以及惰性的流評估來減少過程中所占內(nèi)存的足跡(允許處理器對子表達式求值時,“提早退出”而不必運行全部,例如following-sibling::*)。許多處理器還使用比一般DOM實現(xiàn)更有效率(在空間和時間上)的樹表達式。

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

返回頂部
主站蜘蛛池模板: 日本一级毛片免费播放 | 亚洲制服丝袜第一页 | 欧美日韩国产不卡在线观看 | jiucao在线观看精品 | 午夜一级毛片看看 | 黄色毛片小视频 | 三黄色片| 国产三级手机在线 | 免费香蕉视频国产在线看 | 国产伦一区二区三区免费 | 又做又爱高清免费观看 | 久久久久久亚洲精品影院 | 北条麻妃一区二区三区 | 亚洲逼院 | 久久久成人啪啪免费网站 | 啪啪网视频 | 精品日韩在线观看 | 国产成人在线观看免费网站 | 国产在视频线精品视频www666 | www.一级毛片 | 久久免费福利视频 | 欧美一级毛片免费高清aa | 亚洲精品第一区二区三区 | 国产精品美女福利视频一区 | 国产精品一二区 | 国产男女野战视频在线看 | 久草国产视频 | 99久久免费国产特黄 | 成人毛片免费观看视频 | 精品成人免费一区二区在线播放 | 一级一级特黄女人精品毛片 | 国产高清视频 | 猫咪视频成人永久免费观看 | 久久99国产一区二区三区 | 亚洲第一视频在线播放 | 91国内精品 | 美日韩精品 | 欧美综合视频在线观看 | 小视频在线免费观看 | 中文字幕 亚洲精品 第1页 | 九九九在线视频 |