青草久久影院-青草久久伊人-青草久久久-青草久久精品亚洲综合专区-SM双性精跪趴灌憋尿调教H-SM脚奴调教丨踩踏贱奴

17站長(zhǎng)網(wǎng)

XSLT教程

XSLT教程

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

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

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

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

XSLT歷史

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

  • XSLT 1.0版本:XSLT是二十世紀(jì)末萬維網(wǎng)聯(lián)盟(W3C)可擴(kuò)展樣式表語言(XSL)開發(fā)工作的一部分,該項(xiàng)目還產(chǎn)出了XSL-FO和XPath。編訂XSLT規(guī)范的委員會(huì)成員,包括編輯James Clark,具備DSSSL的工作經(jīng)驗(yàn)。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主導(dǎo)開發(fā)的,在2007年1月成為推薦狀態(tài)。然而至2010年,XSLT 1.0仍然被廣泛使用,因?yàn)榭蛻舳说木W(wǎng)絡(luò)瀏覽器尚未內(nèi)置支持XSLT 2.0,或因?yàn)樘幱贚AMP架構(gòu)環(huán)境中。

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

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

    • 改進(jìn)大型樣式表的模塊化。

    • 改進(jìn)動(dòng)態(tài)錯(cuò)誤的處理,例如xsl:try指令。

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

設(shè)計(jì)模型與處理

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

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

處理器實(shí)現(xiàn)

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

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

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

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

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

    • 在Python,Perl,Ruby,PHP,Common Lisp,Tcl和C++等編程語言中也有相對(duì)的綁定。

  • MSXML和.NET。MSXML包括XSLT 1.0處理器。從MSXML 4.0它包括指令列的工具程序msxsl.exe。

  • Saxon:XSLT 3.0和XQuery 3.1處理器,有獨(dú)立操作的開源和專有版本,也提供了可用于Java,JavaScript和.NET的庫。

  • QuiXSLT:由Innovimax和INRIA以Java編程語言實(shí)現(xiàn)的XSLT 3.0處理器。

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

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

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

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

XSLT性能

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

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

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

返回頂部
主站蜘蛛池模板: 亚洲精品久久一区二区三区四区 | 欧美高清vivoesosexo10 | 欧美精品一区二区三区四区 | 国产精品亚洲污污网站入口 | 不用播放器的黄 | 纯肉巨黄H爆粗口男男分卷阅读 | AV福利无码亚洲网站麻豆 | 被六个男人躁到一夜同性 | 亚洲2017久无码 | 色狠狠色狠狠综合天天 | 亚洲 自拍 偷拍 另类综合图区 | 在线播放一区二区精品产 | 亚洲永久精品AV在线观看 | 牛牛在线1视频 | 免费一级毛片在线观看 | 久久精品影视 | 老司机福利在视频在ae8 | 日本熟妇乱妇熟色在线电影 | 国产午夜精品福利久久 | DASD-700美谷朱里 | 草699一码二码三码四码 | 丰满老熟好大bbbxxx | 小小水蜜桃视频高清在线观看免费 | 91免费永久在线地址 | 欧美AAAA片免费播放观看 | 一本道高清不卡v免费费 | 亚洲欧美一区二区三区导航 | 亚洲精品无码专区在线播放 | 日日操夜夜摸 | 久久黄色免费网站 | 青娱乐视觉盛宴国产视频 | 97午夜伦伦电影理论片 | yellow2019在线观看视频 | 国产av免费观看日本 | 欧美日韩黄色 | 一个人在线观看视频免费 | 年轻的的小婊孑2中文字幕 你是淫荡的我的女王 | 99视频在线免费观看 | 1a级毛片免费观看 | 99热只有精品| 国产亚洲精品久久久久久禁果TV |