第5章 可擴(kuò)展樣式表語言轉(zhuǎn)換_第1頁
第5章 可擴(kuò)展樣式表語言轉(zhuǎn)換_第2頁
第5章 可擴(kuò)展樣式表語言轉(zhuǎn)換_第3頁
第5章 可擴(kuò)展樣式表語言轉(zhuǎn)換_第4頁
第5章 可擴(kuò)展樣式表語言轉(zhuǎn)換_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第5章可擴(kuò)展樣式表語言轉(zhuǎn)換(XSLT)可擴(kuò)展樣式表語言轉(zhuǎn)換(XSLT)是XML最重要的應(yīng)用技術(shù)之一。他的主要作用是抽取XML文檔中的信息并將其轉(zhuǎn)換成其他格式的數(shù)據(jù)。引入XSL轉(zhuǎn)換的目的,是為了提供將XML文檔方便地轉(zhuǎn)換成所需數(shù)據(jù)形式的途徑。5.1什么是XSLXSL(eXtensibleStyleLanguge)是描述XML文檔樣式信息的一種語言,由W3C于1999年制定。雖然使用DOM、SAX、XMLPULL等編程模型也可以處理XML文檔,將其中的信息抽取出來并轉(zhuǎn)換成其他格式的數(shù)據(jù),但如果對(duì)每個(gè)任務(wù)都編制專門程序,將無疑是低效而枯燥的。XSL則提供了將XML文檔方便地轉(zhuǎn)換成所需數(shù)據(jù)形式的新方法。5.1.1XSL構(gòu)成XSL技術(shù)由3部分組成:XSL格式化對(duì)象(XSLFormattingObjects,XSL-FO,簡(jiǎn)稱FO)、XSL轉(zhuǎn)換(XSLTransformations,XSLT)和XML路徑(XPath)。其各自的功能如下:1.格式化對(duì)象(FO)2.XSL轉(zhuǎn)換(XSLT)3.XPath技術(shù)5.1.2樹形結(jié)構(gòu)樹形結(jié)構(gòu)是一種數(shù)據(jù)結(jié)構(gòu),是總線形的延伸,它是一個(gè)分層分支的結(jié)構(gòu)。樹狀結(jié)構(gòu)是由連接起來的節(jié)點(diǎn)(node)組成的,這些節(jié)點(diǎn)起始于一個(gè)稱為根節(jié)點(diǎn)(root)的單節(jié)點(diǎn)。5.1.3XSL樣式單文檔XSL樣式單文檔是指使用XSL規(guī)則編寫的文檔,其作用是將一組元素描述的XML數(shù)據(jù)轉(zhuǎn)換為另一組元素描述的文檔,或者是將該數(shù)據(jù)轉(zhuǎn)換為一種自定義的文本格式。XSL把XML文檔轉(zhuǎn)換為完全不同的輸出,這樣可以把數(shù)據(jù)內(nèi)容存儲(chǔ)在XML文檔中,然后通過各種媒體將其輸出到各種介質(zhì)中,如無線電、打印、語音等格式。當(dāng)數(shù)據(jù)發(fā)生變化時(shí),只需要修改源XML文檔,不需要在多處重復(fù)相同的修改工作。5.1.4在何處進(jìn)行XML變換樣式與內(nèi)容相分離是XML最重要的特點(diǎn),因此,要想以各種不同的樣式顯示XML文檔的內(nèi)容就必須對(duì)XML的內(nèi)容進(jìn)行變換。對(duì)XML進(jìn)行變換其實(shí)質(zhì)就是抽取XML文檔所包含的“內(nèi)容”,再轉(zhuǎn)變?yōu)樾枰@示的“樣式”。處理過程如圖5.2所示。5.2創(chuàng)建一個(gè)XSL實(shí)例使用XSL顯示XML的基本思想是通過定義模板將XML源文件轉(zhuǎn)換為帶樣式信息的可瀏覽文件,模板可以是HTML格式、帶CSS的XML格式及FO格式。

5.2.1源代碼及顯示效果有了以上對(duì)XSL的認(rèn)識(shí),下面將創(chuàng)建一個(gè)簡(jiǎn)單的XSL實(shí)例來進(jìn)行說明。5.2.2各部分詳解(1)XML部分在XML中使用如下語句聲明XSL樣式單。<?xml-stylesheettype="text/xsl"href="2.xsl"?>該語句表示使用的XSL樣式單為“2.xsl”文件。(2)XSL部分首先注意到的是,XSL文件本身就是一份XML文檔,因此在XSL文件的開頭,一樣有與XML文檔相同的聲明。W3C為XSL定義了很多標(biāo)記(元素),XSL文件就是這些標(biāo)記和HTML標(biāo)記的組合。5.3XSL模板模板是XSLT中非常重要的概念。模板以“template”元素聲明,包含一系列XSL指令(Instruction),控制XSL轉(zhuǎn)換流程并指定XSL轉(zhuǎn)換的輸出內(nèi)容。XSLT模板有兩種類型:一種作為模板規(guī)則(Templaterule),匹配指定的XML節(jié)點(diǎn);另一種作為具名模板(Namedtemplate),可被“call-template”元素顯式調(diào)用。模板規(guī)則必須有“match”屬性,該屬性為XPath表達(dá)式,指定該模板可以匹配哪些XML節(jié)點(diǎn)。具名模板必須有“name”屬性,以被“call-template”元素調(diào)用。5.3.1模板的簡(jiǎn)單應(yīng)用XSLT處理器在發(fā)現(xiàn)XSLT文檔中的一個(gè)顯式調(diào)用或者在源XML文檔中發(fā)現(xiàn)匹配節(jié)點(diǎn)之后就會(huì)執(zhí)行xsl:template。最常見的情況是當(dāng)XSLT處理器掃描XML時(shí)遇到了匹配節(jié)點(diǎn)。匹配屬性則用XPath表達(dá)式標(biāo)識(shí)出源文檔中的節(jié)點(diǎn),交由模板處理。向匹配的元素輸出模板需要的內(nèi)容。這些內(nèi)容可能由文本和非XSLT的標(biāo)記所組成,并直接寫入某個(gè)新建文檔乃至更多的XSLT元素。XSLT元素只處理被模板激活的同類節(jié)點(diǎn)。多個(gè)模板可以匹配一個(gè)節(jié)點(diǎn)。在這種情況下,采用模式和優(yōu)先級(jí)屬性的復(fù)雜規(guī)則確定了應(yīng)由哪個(gè)模板來處理節(jié)點(diǎn)。5.3.2xsl:apply-templates元素xsl:apply-templates可以告訴格式化程序把與源元素匹配的每個(gè)子元素同樣式單中的模板相比較,用于匹配節(jié)點(diǎn)的模板本身可能包含xsl:apply-templates元素,以便搜索與其子節(jié)點(diǎn)的匹配。當(dāng)格式化引擎處理節(jié)點(diǎn)時(shí),此節(jié)點(diǎn)是作為整個(gè)樹形結(jié)構(gòu)來看待的。圖5.6apply-templates元素輸出效果

5.3.3select特性“apply-templates”元素以select”屬性指定XPath表達(dá)式,遍歷該表達(dá)式所匹配節(jié)點(diǎn)集的每個(gè)節(jié)點(diǎn),逐一應(yīng)用相應(yīng)的模板規(guī)則進(jìn)行處理。此元素的屬性如表5.1所示,結(jié)構(gòu)關(guān)系如表5.2所示。名稱用法默認(rèn)值說明select可選node()XPath表達(dá)式,以當(dāng)前XML上下文節(jié)點(diǎn)為基礎(chǔ),選擇匹配的節(jié)點(diǎn)集mode可選“”指定所應(yīng)用模板所應(yīng)具有的模式屬性5.3.4默認(rèn)的模板規(guī)則XSL定義兩個(gè)默認(rèn)的模板規(guī)則,在所有的樣式單中都隱性地包括這兩個(gè)規(guī)則。第一個(gè)默認(rèn)規(guī)則將模板應(yīng)用于所有元素的子元素,以遞歸的形式,降序排列元素的結(jié)構(gòu)樹。這種方式可確保應(yīng)用于元素的所有模板規(guī)則都能夠被說明。第二個(gè)默認(rèn)規(guī)則應(yīng)用于下一個(gè)節(jié)點(diǎn),將這些節(jié)點(diǎn)的值復(fù)制到輸出流中。這兩個(gè)規(guī)則共同使用,表示即使是沒有任何元素的空XSL樣式單,仍將產(chǎn)生把輸入的XML文檔的原始字符數(shù)據(jù)作為輸出內(nèi)容的結(jié)果。5.4XSL元素XSLT是一種說明性的語言,通過其元素、屬性指示XSL處理器執(zhí)行XML文檔的轉(zhuǎn)換操作。XSLT元素必須屬于“/1999/XSL/Transform”名稱空間。元素的前綴取名是否為“xsl”是無關(guān)緊要的,但一般都使用“xsl”作為XSLT元素的前綴。5.4.1XSL元素構(gòu)成XML元素指的是從該元素的開始標(biāo)記到結(jié)束標(biāo)記之間的這部分內(nèi)容。XML元素有元素內(nèi)容,混合內(nèi)容,簡(jiǎn)單內(nèi)容或者空內(nèi)容。每個(gè)元素都可以擁有自己的屬性。XML元素命名必須遵守下面的規(guī)則:(1)元素的名字可以包含子母,數(shù)字和其他字符。(2)元素的名字不能以數(shù)字或者標(biāo)點(diǎn)符號(hào)開頭。(3)元素的名字不能以XML(或者xml,Xml,xMl...)開頭。(4)元素的名字不能包含空格。5.4.2循環(huán)xsl:for-each“for-each”元素內(nèi)包含一系列指令,用于處理“select”屬性匹配的每個(gè)節(jié)點(diǎn)。具體過程如下。(1)以當(dāng)前上下文節(jié)點(diǎn)為基礎(chǔ),使用“select”屬性的XPath表達(dá)式,匹配XML文檔的節(jié)點(diǎn)。(2)如所得的匹配節(jié)點(diǎn)集不為空,則執(zhí)行“for-each”的指令。(3)執(zhí)行指令時(shí),將選出節(jié)點(diǎn)集內(nèi)的第1個(gè)節(jié)點(diǎn)設(shè)為上下文節(jié)點(diǎn)。(4)然后將XSL處理流程轉(zhuǎn)到“for-each”元素內(nèi)的指令。(5)“for-each”內(nèi)的所有指令都處理完畢后,將匹配節(jié)點(diǎn)集的下一個(gè)節(jié)點(diǎn)設(shè)為上下文節(jié)點(diǎn),XSL處理流程轉(zhuǎn)到“for-each”開頭,再用“for-each”內(nèi)的指令處理該節(jié)點(diǎn)。(6)重復(fù)上述過程,直到“select”屬性選出的所有節(jié)點(diǎn)處理完畢為止。(7)處理流程轉(zhuǎn)向“for-each”元素后的XSL節(jié)點(diǎn)。5.4.3排序xsl:sort“sort”元素用于排序“apply-templates”或“for-each”元素選出的節(jié)點(diǎn)集。此元素的屬性如表5.11所示,結(jié)構(gòu)關(guān)系如表5.12所示。5.4.4選擇xsl:if和xsl:choose“if”元素指定一個(gè)條件,如條件成立,則執(zhí)行“if”包含的指令。“choose”元素和“when”、“otherwise”元素配合使用,根據(jù)條件執(zhí)行XSLT指令。5.4.5xsl:fallback元素“fallback”用于指定在XSL處理器缺少所需特性時(shí)的處理辦法。使用此元素可提高XSL轉(zhuǎn)換的兼容性,使之可同時(shí)被多種XSL處理器處理。此元素的結(jié)構(gòu)關(guān)系如表5.18所示?!癴allback”元素的內(nèi)容作為缺失父元素特性時(shí)的輸出內(nèi)容。如果處理器能夠處理父元素所代表的特性,則會(huì)忽略“fallback”的所有內(nèi)容。5.4.6XSL函數(shù)集XSL轉(zhuǎn)換過程中,除了可以調(diào)用XPath的函數(shù)(如position、number等),還可以調(diào)用XSLT函數(shù)。1.當(dāng)前節(jié)點(diǎn)函數(shù)current()2.文檔訪問函數(shù)document()3.元素有效性函數(shù)element-avaible()4.格式轉(zhuǎn)化函數(shù)format-number()5.函數(shù)有效性函數(shù)function-available()6.元素標(biāo)識(shí)符函數(shù)generate-id()7.節(jié)點(diǎn)索引函數(shù)key()8.系統(tǒng)屬性函數(shù)system-property()9.非解析實(shí)體函數(shù)unparsed-entity-uri()10.繼承的XPath函數(shù)集InheritedXPathFunctions5.5匹配節(jié)點(diǎn)的模式xsl:template元素的match特性支持復(fù)雜的語法,允許人們精確地表達(dá)想要和不想要與哪個(gè)節(jié)點(diǎn)匹配。xsl:apply-templates、xsl:value-of、xsl:for-each、xsl:copy-of和xsl:sort的select特性支持功能更加強(qiáng)大的語法的超集,允許人們精確地表達(dá)想要和不想要選擇哪個(gè)節(jié)點(diǎn)。下面討論匹配和選擇節(jié)點(diǎn)的各種模式。5.5.1匹配根節(jié)點(diǎn)為了使輸出的文檔結(jié)構(gòu)整潔。從XSL變換的第一個(gè)輸出內(nèi)容應(yīng)為輸出文檔的根元素。因此,XSL樣式單一般以應(yīng)用于根節(jié)點(diǎn)的規(guī)則開始。要在規(guī)則中指定根節(jié)點(diǎn),可將其match特性設(shè)置為合適的值。示例如下。<xsl:templatematch="/"><html><xsl:apply-templates/></html></xsl:template>本規(guī)則應(yīng)用于根節(jié)點(diǎn),并且只應(yīng)用于輸入樹形結(jié)構(gòu)的根節(jié)點(diǎn)。當(dāng)讀取到此根節(jié)點(diǎn)時(shí),就輸出<html>標(biāo)記,處理根節(jié)點(diǎn)的子節(jié)點(diǎn),然后輸出</html>標(biāo)記。5.5.2匹配元素名在正如前面介紹的那樣,最基本的模式只包含一個(gè)元素名,用來匹配所有帶有該名的元素。例如,下面的模板與Student元素相匹配,并將Student元素的name子元素標(biāo)成粗體。<xsl:templatematch=”Student”><b><xsl:value-ofselect=”name”/><b></xsl:template>5.5.3使用/字符匹配子節(jié)點(diǎn)在match特性中并不局限于當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn),可使用/符號(hào)來匹配指定的元素后代。當(dāng)單獨(dú)使用/符號(hào)時(shí),它表示引用根節(jié)點(diǎn)。但是,在兩個(gè)名稱之間使用此符號(hào)時(shí),表示第二個(gè)是第一個(gè)的子代。例如,student/name引用name元素,name元素為student元素的子元素。在xsl:template元素中,這種方法能夠用來只與某些給定類型的元素進(jìn)行匹配。例如,下面的模板規(guī)則將student子元素的name元素標(biāo)記為Strong。此規(guī)則與不是student元素的直系子元素的NAME元素?zé)o關(guān)。5.5.4使用//字符匹配子節(jié)點(diǎn)在有時(shí)候,尤其是使用不規(guī)則的層次時(shí),更容易的方法就是越過中間節(jié)點(diǎn)、只選擇給定類型的所有元素,而不管這些元素是不是直系子、孫、重孫或其他所有的元素。雙斜杠(//)引用任意級(jí)別的后代元素。5.5.5通過ID匹配在某些時(shí)候需要把一特定的樣式應(yīng)用于特定的單一元素中,而不改變?cè)擃愋偷乃衅渌?。在XSL中實(shí)現(xiàn)此目的的最簡(jiǎn)單的方法是,將樣式與元素的ID作為選擇符(其中包括以單引號(hào)括起來的ID值)就能夠做到這一點(diǎn)。5.5.6使用@來匹配特性@符號(hào)根據(jù)特性名與特性相匹配,并選擇節(jié)點(diǎn)。方法很簡(jiǎn)單,只需在要選擇的特性前加上@符號(hào)。5.5.7使用comments()注釋要使注釋成為文檔的必不可少的部分,確實(shí)不是好主意。在大多數(shù)時(shí)候,可能應(yīng)該完全忽略XML文檔中的注釋。但是,當(dāng)不得不選擇注釋時(shí),XSL確實(shí)提供了選擇注釋的手段。為了選擇注釋,可使用comment()模式。盡管此模式有類似函數(shù)的圓括號(hào),但實(shí)際上卻不帶任何參數(shù),要區(qū)分不同的注釋不太容易。實(shí)際應(yīng)用時(shí),決不要將重要信息放在注釋中。XSL允許人們選擇注釋的唯一真實(shí)的理由是:用樣式單把一種標(biāo)記語言變換成另一種標(biāo)記語言,同時(shí)又能使注釋保持不變。選擇注釋的任何其他方面的用途都意味著原文檔設(shè)計(jì)得不好。5.5.8使用pi()來匹配處理指令pi()函數(shù)選擇處理指令。pi()的參數(shù)是放在引號(hào)內(nèi)的字符串,表示要選擇的處理指令的名稱。如果沒有參數(shù),則匹配當(dāng)前節(jié)點(diǎn)的第一個(gè)處理指令子節(jié)點(diǎn)。但是,可以使用層次操作符。5.5.9用text()來匹配文本節(jié)點(diǎn)text()操作符能夠明確選擇一個(gè)元素的文本子元素。盡管這種操作符有圓括號(hào),但不需要任何參數(shù)。示例如下。<xsl:templatematch="SYMBOL"><xsl:value-ofselect="text()"/></xsl:template>此操作符存在的主要原因是為了用于默認(rèn)規(guī)則。無論作者是否指定默認(rèn)規(guī)則,XSL處理程序必須提供下列的默認(rèn)規(guī)則。5.5.10使用“或”操作符豎線(|)允許一條模板規(guī)則匹配多種模式。如果節(jié)點(diǎn)與某種模式相匹配,則此節(jié)點(diǎn)將激活該模板。例如,下面模板規(guī)則與Student和Teacher元素都匹配。<xsl:templatematch=”StudentR|Teacher”><B><xsl:apply-templates/></B></xsl:template>也可以在|兩邊加入空格,這樣使代碼更清晰。示例如下。<xsl:templatematch=”StudentR|Teacher”><B><xsl:apply-templates/></B></xsl:template>5.6輸出格式與編碼問題在這一節(jié)中,主要介紹輸出文檔、輸出文本、輸出元素、輸出屬性、輸出指令、輸出注釋、輸出消息,替換名稱空間以及空白符的輸出幾個(gè)部分。5.6.1輸出文檔<xsl:output>元素用于控制輸出文檔的類型及格式。該元素必須作為XSLT文檔的頂層元素出現(xiàn),即只能作為<xsl:stylesheet>元素的子元素出現(xiàn)。在前面的內(nèi)容中提到,XSLT可以將XML文檔轉(zhuǎn)換為XML、HTML、TEXT等格式。XSLT究竟將XML源文檔轉(zhuǎn)換為哪種格式的文檔,正是由<xsl:output>元素決定。5.6.2輸出文本輸出控制指令——<xsl:output>用來控制輸出文檔的格式,在具體的輸出工作中,最常用的則是輸出文本。輸出文本所用到的指令為<xsl:value-of>。<xsl:value-of>的使用語法如下。<xsl:value-ofselect="xpathExpression"disable-output-escaping="yes|no"/>代碼說明如下。(1)select屬性,必選。指定一個(gè)XPath表達(dá)式,注意XPath表達(dá)式有4種數(shù)據(jù)類型。(2)disable-output-escaping屬性,可選。用于指定是否禁用輸出字符轉(zhuǎn)義。默認(rèn)值為no。5.6.3輸出元素元素是一個(gè)XML文檔構(gòu)成的基本單位。在XSLT轉(zhuǎn)換文檔中,可以使用指令<elementName>直接生成元素,這樣的元素將被直接輸出到目標(biāo)XML文檔中。但有時(shí)這種方式會(huì)失效,例如,元素名需要?jiǎng)討B(tài)生成、特殊名稱空間元素等。這就需要用到生成元素指令<xsl:element>。5.6.4輸出屬性<xsl:attribute>指令用于創(chuàng)建一個(gè)屬性。由于屬性總是依附于元素存在,所以,該指令總是存在于某個(gè)元素的內(nèi)容模板之內(nèi)。該指令生成的屬性將被添加到該元素中。<xsl:attribute>元素用于創(chuàng)建屬性,并將屬性添加到元素節(jié)點(diǎn)中。5.6.5輸出指令在XML文檔中,指令也是不可或缺的一部分,本節(jié)將講述如何向目標(biāo)XML文檔輸出指令。向目標(biāo)XML文檔輸出處理指令,應(yīng)該使用<xsl:processing-instruction>元素。5.6.6輸出注釋輸出注釋節(jié)點(diǎn)需要用到指令<xsl:comment>。<xsl:comment>指令的使用語法如下所示。<xsl:comment><!—--注釋內(nèi)容--!></xsl:comment>代碼說明。commentcontent注釋內(nèi)容用來為新生成的注釋節(jié)點(diǎn)提供內(nèi)容。5.6.7輸出消息消息輸出也是很多編程語言中都具備的功能。XSLT的消息一般都是輸出在控制臺(tái)中,并可以控制是否需要停止程序的執(zhí)行。輸出消息所使用的XSLT元素為<xsl:message>。其使用語法如下所示。<xsl:messageterminate="yes|no"><!—內(nèi)容:模板--></xsl:message>代碼說明。屬性terminate,可選。用于指定是否終止程序的執(zhí)行。當(dāng)其值為“yes”時(shí),處理器將給出消息窗口,并終止程序的執(zhí)行;當(dāng)其值為“no”時(shí),程序?qū)⒗^續(xù)執(zhí)行。默認(rèn)值為no。5.6.8替換名稱空間在XSLT中還有另外一個(gè)針對(duì)名稱空間的處理指令,這就是<xsl:namespace-alias>元素。<xsl:namespace-alias>元素使得輸出時(shí),以不同的名稱空間來代替XSLT文檔中的名稱空間。其使用語法如下所示。<xsl:namespace-aliasstylesheet-prefix="prefix|#default"result-prefix="prefix|"#default"/>代碼說明。(1)屬性stylesheet-prefix,必選。指定在XSLT中想要改變的名稱空間的前綴。(2)屬性result-prefix,可選。指定在輸出中要轉(zhuǎn)換為哪個(gè)名稱空間的前綴。5.6.9空白符的輸出空白符是指空格、制表符、回車符和換行符4種字符??瞻追麑?shí)實(shí)在在地存在于XML文檔中,但卻容易被忽略??瞻追赬ML文檔中,是以文本節(jié)點(diǎn)的形式存在的??瞻追梢苑譃閮深?,如下所示。(1)無意義空白符。這類空白符往往是為了XML文檔的可讀性更強(qiáng),而添加的換行和縮進(jìn)。這類空白符并非有用信息。因此在進(jìn)行處理時(shí),應(yīng)當(dāng)忽略其存在。(2)有意義空白符。這類空白符是文檔內(nèi)容的有機(jī)組成部分,屬于存儲(chǔ)的信息。應(yīng)當(dāng)予以保留。5.7格式對(duì)象FOXSL-FO現(xiàn)在也通常叫做XSL。通過前面的介紹可以知道:XSL是一種以XML為基礎(chǔ)的標(biāo)記語言,它對(duì)輸出到屏幕、紙張或其他媒體上的XML數(shù)據(jù)的格式化作了具體的描述。如果XML只是轉(zhuǎn)換為HTML這類格式,使用XSLT即可,如果要轉(zhuǎn)換到PDF等格式,需要使用XSL-FO。XSL-FO是W3C指定的、用于格式化XML數(shù)據(jù)的語言。XSL-FO全稱為ExtensibleStylesheetLanguageFormattingObjects(格式化對(duì)象的可擴(kuò)展樣式表語言),XSL-FO定義了一大堆格式對(duì)象,例如頁面、表格等等,但沒有限定使用什么方式顯示,可以轉(zhuǎn)換成PDF,SVG,甚至GUI控件。5.7.1XSL-FO文檔當(dāng)萬維網(wǎng)聯(lián)盟(W3C)做出第一份XSL工作草案時(shí),它囊括了XML文檔的轉(zhuǎn)換和格式化的語法。后來,W3C的XSL工作組把原草案分成了以下幾塊參考標(biāo)準(zhǔn)。(1)XSLT,alanguagefortransformingXMLdocuments(2)XSL或XSL-FO,用于格式化XML文檔的一種語言(3)XPath,用于在XML文檔中對(duì)元素和屬性進(jìn)行操作的語言XSL-FO文檔是含有輸出信息的XML文檔。XSL-FO文檔是含有輸出信息的XML文檔。它們包含了輸出排版和輸出內(nèi)容的信息5.7.2XSL-FO區(qū)域XSL-FO用矩形塊(域)顯示結(jié)果。XSL格式化模型定義了大量的矩形域(塊狀區(qū))來顯示數(shù)據(jù),所有的結(jié)果(文本,圖片,等等)都會(huì)被格式化后放入這些區(qū)域里,然后在目標(biāo)媒體上顯示或打印出來。XSL-FO結(jié)果被格式化成頁面形式。打印出來的結(jié)果通常會(huì)形成很多分開的頁面。瀏覽器的輸出結(jié)果通常會(huì)是長(zhǎng)長(zhǎng)的一頁。XSL-FO每頁都含有大量的區(qū)域。5.7.3XSL-FO輸出XSL-FO在<fo:flow>元素里定義輸出結(jié)果。它包含了頁面(Page)、流向(Flow)、區(qū)域(Block)三個(gè)部分。其內(nèi)容可以概括為:“Flows元素的內(nèi)容Blocks進(jìn)入Pages,然后到達(dá)輸出的媒體。”XSL-FO輸出通常嵌在<fo:block>元素、<fo:flow>元素、以及<fo:sequence>元素里。5.7.4XSL-FOFLOWXSL-FO充滿了來自<fo:flow>元素的數(shù)據(jù)。XSL-FO用<fo:sequence>元素來定義輸出頁面每個(gè)輸出的頁面都涉及到定義頁面排版的頁面模版,每頁輸出頁面指都有定義輸出的<fo:flow>元素,每頁輸出頁面都按順序打?。ɑ蝻@示)。<fo:flow>元素包含了要被打印在頁面上的所有元素。當(dāng)頁面印滿時(shí),相同的頁面模版(pagemaster)會(huì)被反復(fù)地使用直到所有文本都被打印出來為止。<fo:flow>元素有“flow-name”(流向名)屬性。流向名(flow-name)屬性的值決定了<fo:flow>元素內(nèi)容的流向。5.7.5XSL-FO頁面XSL-FO使用名為“PageMasters”的頁面模板來定義頁面的排版,每塊模板必須有個(gè)獨(dú)立的名稱。XSL-FO使用下面的屬性來定義頁面的大小。(1)margin-top定義了頂邊空白(2)margin-bottom定義了底邊空白(3)margin-left定義了左邊空白(4)margin-right定義了右邊空白(5)margin定義了所有的四邊空白XSL-FO用以下元素來定義頁面的區(qū)域。(1)region-body定義了整體區(qū)域(2)region-before定義了頂端的區(qū)域(標(biāo)題)(3)region-after定義了底端區(qū)域(頁腳)(4)region-start定義了左端區(qū)域(左端工具條)(5)region-end定義了右端區(qū)域(右端工具條)5.7.6XSL-FO塊狀區(qū)域XSL-FO輸出進(jìn)入塊狀區(qū)域。它包括XSL-FOPages,F(xiàn)low

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論