成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

XSLT表達(dá)式處理技術(shù)

2010-08-28 10:47:36來源:西部e網(wǎng)作者:

  我們將選擇你已經(jīng)在以前的信息里了解的各種各樣的功能和表達(dá)方式并且描述怎樣把他們嵌入在處理指令的順序里面。通常,這發(fā)生在一些標(biāo)記的元素或者其他標(biāo)記的元素的范圍內(nèi),因?yàn)檫@些元素在XSLT里履行了特定的角色的功能,和在很多編程語言內(nèi)的那些函數(shù)或者子程序調(diào)用所起到的作用相同。 實(shí)際上,在特定的上下文中,你將發(fā)現(xiàn)XSLT中的大多數(shù)反復(fù)和遞歸結(jié)構(gòu)都靠岸工作的——在接下來的講解中將會了解到。

  操縱和處理特定的文檔節(jié)點(diǎn)

  使用<xsl:call-template>來處理一些節(jié)點(diǎn)而不是現(xiàn)在的文檔節(jié)點(diǎn),最迅速的技術(shù)是將元素<xsl:call-template>置于一個<xsl:for-each>元素內(nèi)部,但是你也可以為一個目標(biāo)模板提供一個唯一的節(jié)點(diǎn)名字,并且使用<xsl:apply-template>元素來應(yīng)用于一些具體的節(jié)點(diǎn)。但是,"為每一個"建造, 是完全反復(fù)并且在特定的情形里更有意義的,在這些特定的情況下,在一份文檔或者結(jié)果樹里的全部節(jié)點(diǎn)無論如何都需要被處理。 你將發(fā)現(xiàn)這種方法的例子,有人在Michael Kay的XSLT 程序員參考里完全地詳細(xì)說明。他也解釋一種靈巧的技術(shù),該技術(shù)描述了在一個<xsl:variable>元素里面調(diào)用<xsl:call-template>的方法。在<xsl:variable>元素里,一個簡單的從結(jié)果樹到字符行為的轉(zhuǎn)換就好像<xsl:call-template>元素正從它的調(diào)用中返回的一個結(jié)果。

  這類過程的結(jié)構(gòu)可能被如下的方式說明, 在下面已給在方括號內(nèi)的裝入的字符值的模版在一個變量元素內(nèi)被調(diào)用。

<!-- start with template definition, proceed to variable
     element -->
<xsl:template name="bracketit">
  <xsl:param name="string" />
  <xsl:value-of select="concat("'[', $string, ']')"/>
</xsl:template>

<xsl:variable name="cite-in-brackets">
  <xsl:call-template name="bracketit"/>
    <xsl:with-param name="string" select="@cite"/>
  </xsl:call-template>
</xsl:variable>

  如果cite屬性的值是Horn79,那么變量cite-in-brackets 的結(jié)果值為 [Horn79 ].

  使用遞推處理項(xiàng)目列表

  XSLT沒有像使用在傳統(tǒng)的編程語言里的用來處理具體的計(jì)數(shù)行為的計(jì)數(shù)器一樣的自動增加的變量,也不支持傳統(tǒng)語言中的有條件的循環(huán)結(jié)構(gòu),例如while, for, 或者until 。 但是XSLT確實(shí)支持遞推,提供一種方便的方法達(dá)到相同的目的。這個過程的這種方法導(dǎo)致了遞歸函數(shù)調(diào)用的建立, 這里功能接連不斷被用于在一個列表中的第一個節(jié)點(diǎn)或者一個字符串里面的第一個非空節(jié)點(diǎn), 并且功能也被適用于列表節(jié)點(diǎn)或者字符串的剩余部分——即在帶有第一個要素或者字符順序從它的內(nèi)容除去后剩下的部分。 對每種類型的數(shù)據(jù)來說,處理會一直進(jìn)行,直到列表或者字符串是空的的時候,即當(dāng)不再有節(jié)點(diǎn)出現(xiàn)或者非空的字符存在在剩余的部分的時候。在他的書名為Mastering XSLT 的Sybex書中,Chuck White 指出XSLT 該方法是"重復(fù)每一個命名了的表達(dá)式的實(shí)例的結(jié)果片段。"

  管理有條件處理

   <xsl:choose> 和<xsl:when> 元素允許可能需要多個選擇的條件轉(zhuǎn)移;一個<xsl:otherwise>元素甚至允許明確處理那些沒有通過確定的具體的測試的項(xiàng)目。 那些基本句法提供一個看起來很象典型的具有特定的嵌套的if-then-else語句的構(gòu)造結(jié)構(gòu)。White清楚地說明了下面的這些在Mastering XSLT的語句在去除了實(shí)際的賦值或者限制之后的基本句法。

<xsl:choose>
  <xsl:when test="expression">
     <!-- processing statements -->
  </xsl:when>
  <xsl:otherwise>
     <!-- processing statements -->
  </xsl:otherwise>
</xsl:choose>

  鑒于XSLT 如此容易支持的各種各樣的技術(shù),這使得你可以相當(dāng)容易的構(gòu)建你自己的處理在遍歷,遞推和有條件的測試技術(shù)方面的例子的文檔。 你也能再訪XSLT的指導(dǎo),來獲得更多的插圖和例子,或者也可以翻閱更精心制作和冗長的例子的Sal Mangano的XSLT Cookbook (O'Reilly, 2003),那些例子你都能直接的在你的應(yīng)用中輕松的導(dǎo)入和選擇。

關(guān)鍵詞:XSLT

贊助商鏈接:

主站蜘蛛池模板: 井冈山市| 淮阳县| 淳安县| 兴隆县| 休宁县| 博湖县| 韶山市| 江山市| 安远县| 凉城县| 银川市| 永丰县| 志丹县| 汕尾市| 台江县| 炎陵县| 和静县| 乌兰察布市| 东莞市| 囊谦县| 长乐市| 灵宝市| 禹州市| 武陟县| 新巴尔虎左旗| 剑河县| 兰溪市| 顺义区| 稻城县| 光泽县| 通辽市| 都匀市| 耿马| 彩票| 屯昌县| 大兴区| 汕尾市| 集安市| 东港市| 双鸭山市| 噶尔县|