六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

深入XSL(4)---模板(轉)

[摘要]深入XSL(4)---模板翻譯:孫一中1 概述當應用于源元素的規則被確定后,就要具體實現該規則的模板.一個模板能包含文字結果的元素, 字符數據和產生結果樹部分的指令.指令由XSL名域中的元素來表示,...
深入XSL(4)
---模板
翻譯:孫一中

1 概述

當應用于源元素的規則被確定后,就要具體實現該規則的模板.一個模板能包含文字結果的元素, 字符數據和產生結果樹部分的指令.指令由XSL名域中的元素來表示,可以選擇后代元素來處理. 有兩類這樣的指令, xsl:process-children 和xsl:process; xsl:process-children指令處理源元素的鄰近子元素, 而xsl:process指令處理由指定模式來選擇的元素.見下例:

<xsl:template match="chapter/title">
<fo:rule-graphic/>
<fo:block space-before="2pt">
<xsl:text>Chapter </xsl:text>
<xsl:number/>
<xsl:text>: </xsl:text>
<xsl:process-children/>
</fo:block>
<fo:rule-graphic/>
</xsl:template>


2 文字結果元素

在一個模板中,樣式表中不屬于XSL名域的元素具體化將產生相同類型的節點;生成的元素節點會有已經對在模板樹中的元素規定的屬性. 文字結果元素的一個屬性的值被認為是一個屬性值模板:它能包含在花括號({})中的字符串. 結果元素節點的名域前綴映射是在樣式表中移去映射到XSL名域的URI后的映射.因為XSL處理器只作用于屬于XSL名域的元素,所以就有這樣的問題:如何新建屬于XSL名域的元素?URI是http://www.w3.org/TR/WD-xsl的名域如果緊接出現一個或多個的/quote成為被引用的名域.應用名域將作特殊處理.


3 命名屬性集

xsl:define-attribute-set元素定義了一自命名的屬性集合. "name"屬性規定了屬性集的名稱. xsl:define-attribute-set元素的內容是一個規定屬性的xsl:attribute-set元素.一個文字結果元素或者一個xsl:attribute-set元素能指定一屬性集名稱為xsl:use屬性的值.下面的例子產生了一個稱為title-style的屬性集并在模板規則中使用它.

<xsl:define-attribute-set name="title-style">
<xsl:attribute-set font-size="12pt" font-weight="bold"/>
</xsl:define-attribute-set>
<xsl:template match="chapter/heading">
<fo:block xsl:use="title-style" quadding="start">
<xsl:process-children/>
</fo:block>
</xsl:template>


4 模板中的文字

模板也能包含PCDATA(Parsed Character Data). 在模板中去除空格后的每個數據字符將在結果樹中產生一個數據字符.文字的數據字符也可以包裝在一個xsl:text元素中.這樣的包裝處理可能改變空格的去除但不影響XSL處理器對字符的處理.


5 xsl:process-children的處理

下例新建用于chapter元素的塊(block) 并處理它的相鄰子元素.

<xsl:template match="chapter">
<fo:block>
<xsl:process-children/>
</fo:block>
</xsl:template>

xsl:process-children指令處理當前節點的所有子節點,包括字符. 處理源樹中的字符是將字符添加到結果樹.因此,其中的<標記在源樹中表示<字符,該源樹將由內置的模板規則在結果樹中轉換為<字符,而當結果樹具體化為一個XML文檔時,<字符又將表示為< .


6 xsl:process的處理

xsl:process元素處理由一個模式選擇的元素. xsl:process 元素的模式是一個選擇模式,因而它被間接地定位到當前節點.下面的例子對author-group的所有author子節點進行處理:

<xsl:template match="author-group">
<fo:sequence>
<xsl:process select="author"/>
</fo:sequence>
</xsl:template>

xsl:process元素處理所有匹配規定模式的元素.字符數據不被xsl:process元素匹配.模式不能包含屬性模式(AttributePattern)除非它作為屬性限定(AttributeQualifier)的一部分. 模式控制了發生匹配的深度.下例處理所有author節點中first-name元素:

<xsl:template match="author-group">
<fo:sequence>
<xsl:process select="author/first-name"/>
</fo:sequence>
</xsl:template>

在模式中使用//操作符可以匹配任意的深度. 下例處理在book元素中的所有heading元素.

<xsl:template match="book">
<fo:block>
<xsl:process select=".//heading"/>
</fo:block>
</xsl:template>


7 直接處理

當結果是已知的規則結構,能夠直接確定選擇元素的模板是很有益的. xsl:for-each元素包括一個模板,它具體實現由select屬性規定的每個選擇元素.比如對下面的XML文檔:

<customers>
<customer>
<name>...</name>
<order>...</order>
<order>...</order>
</customer>
<customer>
<name>...</name>
<order>...</order>
<order>...</order>
</customer>
</customers>

下面的XSL將生成一個HTML文檔,包括一個表格,其中的一行就為一個custom元素

<xsl:template match="/">
<HTML>
<HEAD>
<TITLE>Customers</TITLE>
</HEAD>
<BODY>
<TABLE>
<TBODY>
<xsl:for-each select="customers/customer">
<TR>
<TH>
<xsl:process select="name"/>
</TH>
<xsl:for-each select="order">
<TD>
<xsl:process-children/>
</TD>
</xsl:for-each>
</TR>
</xsl:for-each>
</TBODY>
</TABLE>
</BODY>
</HTML>
</xsl:template>


8 模板中的條件

XSL中有兩個指令來支持條件處理: xsl:if和xsl:choose. xsl:if指令提供簡單的if-then的條件選擇; xsl:choose支持多條件的選擇.


9 計算產生的文本

在模板中, xsl:value-of元素能用于計算產生的文本,比如通過從源樹中提取文本或插入字符常數的值. 它由xsl:value-of元素通過一個規定為expr 屬性值的字串表達式來實現. 字串表達式也能在文字結果元素的屬性值中使用,只要將該字串表達式套入{}中.

10 宏

宏能產生結果集合還能被引用,就象一個單獨的對象.在下例中,為一封裝的段落定義了一個宏,在其內容之前增加“Warning!”語句.在匹配warning元素的規則中該宏被引用.

<xsl:define-macro name="warning-para">
<fo:box>
<fo:block>
<xsl:text>Warning! </xsl:text>
<xsl:contents/>
</fo:block>
</fo:box>
</xsl:define-macro>
<xsl:template match="warning">
<xsl:invoke macro="warning-para">
<xsl:process-children/>
</xsl-invoke>
</xsl:template>



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


主站蜘蛛池模板: 做a网站| 五月天婷婷免费观看视频在线 | 欧洲性xxxx免费视频下载软件 | 特级一级毛片免费看 | 欧美性猛交xxxx乱大交中文 | 欧美在线播放一区二区 | 先锋在线资源站 | 日韩免费看片 | 一本久久道aa兔费看 | 日韩黄在线观看免费视频 | 性感美女香蕉视频 | 中文字幕日韩一区二区不卡 | 日本成人免费网站 | 色久综合在线 | 视频一区视频二区在线观看 | 日日摸人人看97人人澡 | 婷婷激情综合网 | 在线看视频的网站入口 | 天天色天天看 | 日韩美香港a一级毛片 | 日韩有码在线观看 | 日韩免费一级毛片 | 偷窥自拍首页 | 天天干狠狠插 | 色妞网欧美 | 亚洲色域网 | 天天干天天草天天射 | 日本爽爽爽爽爽爽在线观看免 | 性色视频在线观看 | 一级爱爱片 | 日日夜夜操天天干 | 亚洲在成人网在线看 | 污在线观看视频 | 性生大片一级毛片免费观看 | 欧洲天堂网 | 日本免费三片在线播放 | 天天干夜夜艹 | 亚洲a在线播放 | 午夜精品视频在线观看美女 | 殴美激情 | 一级香蕉视频在线观看 |