明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線(xiàn)學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

深入XSL(5)---聯(lián)合樣式表(轉(zhuǎn))

[摘要]深入XSL(5)---聯(lián)合樣式表翻譯:孫一中XSL提供兩種機(jī)制來(lái)聯(lián)合樣式表:1.樣式表導(dǎo)入,允許樣式表之間相互引用2.樣式表包含,允許樣式表被原文組合. 樣式表導(dǎo)入一個(gè)XSL樣式表可以包含xsl:i...
深入XSL(5)
---聯(lián)合樣式表
翻譯:孫一中

XSL提供兩種機(jī)制來(lái)聯(lián)合樣式表:

1.樣式表導(dǎo)入,允許樣式表之間相互引用
2.樣式表包含,允許樣式表被原文組合. 

樣式表導(dǎo)入
一個(gè)XSL樣式表可以包含xsl:import元素.所有xsl:import元素必須出現(xiàn)在樣式表的開(kāi)頭. xsl:import元素有一個(gè) href 屬性,它的值就表示要導(dǎo)入的樣式表的URI. 相對(duì)URI是指相對(duì)于xsl:import元素的基URI.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:import href="article.xsl"/>
<xsl:import href="bigfont.xsl"/>
<xsl:define-attribute-set name="note-style">
<xsl:attribute-set font-posture="italic"/>
</xsl:define-attribute-set>
</xsl:stylesheet>

導(dǎo)向的樣式表中的規(guī)則和定義比任何被導(dǎo)入樣式表中的規(guī)則和定義都要重要.同樣,一被導(dǎo)入的樣式表中的規(guī)則和定義比之前導(dǎo)入的樣式表中的規(guī)則和定義都要重要.一般來(lái)說(shuō),更重要的規(guī)則或定義比次重要的規(guī)則或定義要優(yōu)先.每一類(lèi)的規(guī)則和定義都會(huì)詳細(xì)規(guī)定它.

樣式表包含
一個(gè)樣式表中可以用xsl:include元素來(lái)包含另一個(gè)XSL樣式表. xsl:include也有href 屬性,它的值就表示被包含的樣式表的URI. 相對(duì)URI是指相對(duì)于xsl:include元素的基URI. xsl:include元素可以作為xsl:stylesheet元素的子元素,出現(xiàn)在任何xsl:import之后.在XML樹(shù)的層次在上該包含生效.由href屬性值定位的資源內(nèi)容作為一個(gè)XML文檔解析,在該文檔中的xsl:stylesheet元素的子元素替代包含文檔的xsl:include元素.同時(shí)在被包含的文檔的xsl:import元素在包含文檔中移上至任一存在的xsl:import元素之后. 不象xsl:import,被包含的規(guī)則或定義不影響他們被處理的方式.

嵌入樣式表
通常一個(gè)樣式表就是一個(gè)完整的XML文檔,xsl:stylesheet元素作為文檔的元素. 然而一個(gè)XSL樣式表也可以嵌入在其它文檔內(nèi)容之中.內(nèi)嵌的方式可能有兩種:XSL樣式表可以原文嵌入在一個(gè)非XML文檔中或者xsl:stylesheet不作為文檔元素出現(xiàn)在一個(gè)XML文檔中.在第二種情況增加了出現(xiàn)內(nèi)嵌樣式,即自己規(guī)定樣式的文檔的可能. XSL還沒(méi)有為之定義相應(yīng)的機(jī)制.這是由于可以采用把樣式表結(jié)合文檔的通用方式來(lái)實(shí)現(xiàn),只要滿(mǎn)足:

1. 該方式允許一部分內(nèi)容可以規(guī)定為樣式表,例如使用有片段標(biāo)識(shí)符URI
2. 該方式本身能被嵌入在文檔中, 比如作為一個(gè)處理指令.定義這樣的方式不在XSL的范圍之內(nèi).

下例表明了怎樣用xml:stylesheet處理指令將樣式表和文檔結(jié)合來(lái)實(shí)現(xiàn)內(nèi)嵌樣式. 其中的URI在片段標(biāo)識(shí)符中使用了一個(gè)Xpointer來(lái)確定xsl:stylesheet元素的位置.

<?xml version="1.0"?>
<?xml:stylesheet type="text/xsl" href="#id(style1)"?>
<!DOCTYPE doc SYSTEM "doc.dtd">
<doc>
<head>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" id="style1">
<xsl:import href="doc.xsl"/>
<xsl:template match="id(foo)">
<fo:block font-weight="bold"><xsl:process-children/></fo:block>
</xsl:template>
</xsl:stylesheet>
</head>
<body>

<para id="foo">
...
</para>

</body>
</doc>


----------------------------------------------------------------------------