運算子、關係與邏輯運算子,特殊字元等
今天我們學習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(二)
xsl入門 上期我們講到用css 層疊樣式表 來格式化xml文件,其效果並不很令人滿意。實際上css用來格式化html標記比較合適些,只是因為它簡單才在上例中採用。xml在更多的時候只是一種資料檔案,怎樣將它變為我們日常所看到的html格式那樣的檔案呢?如果我們將xml檔案比作結構化的原料的話,那麼...
跟我學XSL(三)
xsl模板與匹配模式 經過前幾日的學習,我們學習了xhtml文件的編寫和以及三個xsl元素,已能編寫相當靈活的xsl文件,今天將學習的是xsl模板的編寫。我們都知道,短的文件 程式十分好讀,但當規模增大後,其複雜性也以更快的速度增加。前面我們學了 xsl for each xsl value of ...
跟我學XSL(五)
xsl中的choose 上期我們學習了xsl元素 xsl if 已能通過測試xml資料的值來決定不同的輸出形式 不知你嘗試過沒有,實際上 xsl for each 也可部分實現 xsl if 的功能 但有時,我們希望對同一資料同時測試多個條件,根據不同條件輸出相應結果。當然,我們可以用if,假如我們...