跟我學XSL(六)

2021-04-15 15:41:23 字數 3072 閱讀 9865

今天我們學習xsl的各種運算子,滿足編寫更大靈活性的xsl樣式的要求。

一、運算子與特殊字元

運算子描述選擇子元素,返回左側元素的直接子元素;如果「/」位於最左側表示選擇根結點的直接子元素

// 遞迴下降,不論深度,搜尋指定的元素;如果位於最左側表示從根結點出發遞迴下降搜尋指定元素

表示當前元素

萬用字元,選擇任意元素,不考慮名字

取得屬性值,作為屬性名的字首

萬用字元,選擇任意屬性,不考慮名字

名字作用範圍分隔符,將名字作用範圍字首與元素或屬性名分隔開來

在相關節點上應用指定方法

分組,明確指定優先順序

應用過濾樣式

下標運算子,用於在集合中指示元素

二、邏輯運算子

比較運算子

可選方式

描述and

$and$或&&

邏輯與or

$or$或||

邏輯或not()

$not$

邏輯非

三、關係運算子

=$eq$相等=

$ieq$

相等(不區分大小寫)

!=$ne$

不等$ine$

不等(不區分大小寫)

<

$lt$

小於$ilt$

小於(不區分大小寫)

< =

$le$

小於等於

$ile$

小於等於(不區分大小寫)

>

$gt$

大於$igt$

大於(不區分大小寫)

>=

$ge$

大於等於

$ige$

大於等於(不區分大小寫)

$all$

集合運算子,如果集合中所有專案均滿足條件則返回「真」

$any$

集合運算子,如果集合中任意專案滿足條件則返回「真」

|集合運算子,返回兩個集合的聯合

示例一:

從個人簡歷中尋找具有具有「web開發」技能的人的姓名與e-mail。假設文件結構如下所示:

< document >

< resume >

< name >name< /name >

< *** >***< /*** >

< birthday >birthday< /birthday >

< skill >skill1< /skill >

< skill >skill2< /skill2 >

< skill >skilln

< /skill >

< /resume >

< resume >

< /resume >

< /document >

為從以上結構的個人簡歷中尋找出所有具有「web開發」技能的人的姓名與e-mail的xsl文件結構如下:

< table border="1" cellspacing="0" >

< th >姓名< /th >< th >e-mail< /th >

< xsl:for-each select="resume [ $any$ skill='web開發' ]" >

< tr >< td >< xsl:value-of select="name"/ >< /td >

< td >< xsl:value-of select="e-mail"/ >< /td >

< /tr >

< /xsl:for-each >

< /table >

說明:1.[ ] ───表示選擇條件,只有滿足條件的個人簡歷才被顯示;

2.$any$ ──由於每個人有多種技能,故加$any$作為字首,以使每個人所有技能都能被比較;

3.skill='web開發' ──篩選條件

示例二、

仍上面的xml文件為例,如果欲選擇1977/1/1之前出生的人的姓名、技能與e-mail,相應的xsl文件結構如下(假定生日格式為yyyy/mm/dd):

< table border="1" cellspacing="0" >

< th >姓名< /th >< th >技能< /th >< th >e-mail< /th >

< xsl:for-each select="resume [ birthday $lt$ '1977/1/1' ]" >

< tr >

< td >< xsl:value-of select="name"/ >< /td >

< td >< xsl:value-of select="skill [0]"/ >

< xsl:for-each select="skill [index() >0]" >、

< xsl:value-of select="."/ >

< /xsl:for-each >

< /td >

< td >< xsl:value-of select="e-mail"/ >< /td >

< /tr >

< /xsl:for-each >

< /table >

說明:1.birthday $lt$ '1977/1/1' ──搜尋條件,在此處使用「< 」會錯誤,故使用「$lt$」表示小於。

2.skill [0] ───表示選擇skill的第一項

3.skill [index() >0]───表示選擇skill的第二項以後(包括第二項)的專案

4.xsl:value-of select="." ───表示選擇當前標記的值

跟我學XSL(六)

運算子 關係與邏輯運算子,特殊字元等 今天我們學習xsl的各種運算子,滿足編寫更大靈活性的xsl樣式的要求。表一 運算子與特殊字元 運算子 描述 選擇子元素,返回左側元素的直接子元素 如果 位於最左側表示選擇根結點的直接子元素 遞迴下降,不論深度,搜尋指定的元素 如果位於最左側表示從根結點出發遞迴下...

跟我學XSL 六

這課學習xsl的函式 一 end 含義 返回集合中最後乙個元素。示例 輸出最後乙份簡歷 假定xml檔案格式為 resume resume resume resume 相應xsl檔案內容為 xsl for each select resume end xsl for each 或 xsl templa...

跟我學XSL(三)

經過前幾日的學習,我們學習了xhtml文件的編寫和以及三個xsl元素,已能編寫相當靈活的xsl文件,今天將學習的是xsl模板的編寫。我們都知道,短的文件 程式十分好讀,但當規模增大後,其複雜性也以更快的速度增加。前面我們學了 xsl for each xsl value of 等,可以用它們對xml...