XSLT是由XSL(Extensible Stylesheet Language)發(fā)展而來的,XSLT是一種基于XML的語言,用于將一類(class)XML文檔轉(zhuǎn)換成另一種XML文檔。
為什么要轉(zhuǎn)換? 轉(zhuǎn)換的目的有多種: (1)顯示:比如把DataSet的XML轉(zhuǎn)換成HTML(HTML可以認為是XML的特例,因為Tag集完全確定)或WML (2)B2B中的EDI,比如<Vendor>全部變成<Supplier>,甚至數(shù)據(jù)也可以以特定的方式改變 (3)編程方面可能存在的特殊要求
XSLT與XML的關(guān)系類似HTML與CSS的關(guān)系 在CSS文件中,定義有一些專門的格式,大意是每逢某個Tag,就將其括起來的內(nèi)容以某種字體或顏色來顯示。XSLT有類似的功效,比如每逢一個特定的Tag就將其內(nèi)容顯示在表格單元中。但是XSLT還有另外一個更強的功能:轉(zhuǎn)換數(shù)據(jù)(為特定的用戶或者設(shè)備),其結(jié)果是:源文檔中的數(shù)據(jù),可能與結(jié)果文檔中的不同,比如一些數(shù)據(jù)不要了,卻出現(xiàn)另一些數(shù)據(jù)(如匯總數(shù)據(jù)或者WML中的特殊設(shè)置,或者字符數(shù)據(jù)發(fā)生變化)。
HTML引用CSS往往是在文件中靜態(tài)聯(lián)接CSS,如下例: ======Test.html <html> <head> <link type="text/css" href="StyleSheet1.css" rel="stylesheet" /> </head> <body> <h1>Header 1</h1> This is a Test </body> </html> ==========StyleSheet1.css H1 { COLOR: red; FONT-STYLE: italic; FONT-FAMILY: Arial; FONT-VARIANT: normal }
與此類似,XML文件中也可以指定適用的XSLT文件。但是真正有用的是動態(tài)apply不同的XSLT文件,比如:<%@ LANGUAGE = JScript %> <% // Set the source and style sheet locations here var sourceFile = Server.MapPath("simple.xml"); var styleFile = Server.MapPath("simple.xsl"); // Load the XML var source = Server.CreateObject("MSXML2.DOMDocument"); source.async = false; source.load(sourceFile); // Load the XSLT var style = Server.CreateObject("MSXML2.DOMDocument"); style.async = false; style.load(styleFile); Response.Write(source.transformNode(style)); %>
兩種轉(zhuǎn)換模式:模板驅(qū)動與數(shù)據(jù)驅(qū)動 Template-driven model:類似郵件合并,根據(jù)XSLT的要求尋找源文檔中的數(shù)據(jù),找到后插入到預(yù)定的位置,最后形成一個符合模板要求的文檔。
Data-driven model:根據(jù)源文檔的結(jié)構(gòu),在XSLT中尋找匹配的模板片斷,最終的格式類似源文檔,而不是XSLT中的整體模板樣式。同一個XSLT中可以包括兩種模式。
|