無為

          無為則可為,無為則至深!

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks
          本期學習XSL樣式方法,即可用于XSL元素<?xsl:for-each?>、<?xsl:value-of?>、 <?xsl:template?>的select屬性、<?xsl:apply-templates?>的match屬性、 <?xsl:if?>、<?xsl:when?>的test屬性中,對元素的范圍進行篩選,從而提供更大的靈活性。


            XML與DHTML(動態HTML)一樣,這些節點都是一個個對象,而且這些對象都是有層次的,從根節點開始構成一顆層次清淅的樹狀結構,這就形成了文檔對象模型DOM,通過對象的屬性、方法來達到訪問控制XML節點的目的。


            我們這里不打算就XML的DOM逐一詳細闡述,因為這完全可以寫成一個篇幅較多的教程,我們先就一些常見的方法作一些討論,以期對DOM的對象方法有一個大致的了解。

            注:從本期開始,所有示例不再提供完整源代碼,如有不明白之處,請仔細閱讀前面七期、并動手練手。

          一、end()

          含義:返回集合中最后一個元素。

          示例:輸出最后一份簡歷

          假定XML文件格式為:

          ……<?resume?>…<?/resume?>……<?resume?>…<?/resume?>……

          相應XSL文件內容為:

          <?xsl:for-each?select="resume[end()]"?>……<?/xsl:for-each?>

          <?xsl:templates?match="resume[end()]"?>……<?/xsl:templates?>

          <?xsl:apply-template?select="resume[end()]"?>……<?/xsl:apply-template?>

          二、index()

          含義:返回該元素在集合中的位置,返回值是一整數,其中第一個元素返回0

          示例:返回前面三份簡歷

          resume[index()?$le$?3]

          注意:index()是與父元素相關的,請看下例:

          <?x?>

          <?y/?>

          <?y/?>

          <?/x?>

          <?x?>

          <?y/?>

          <?y/?>

          <?/x?>

          返回所有<?x?>中的第一個<?y?>

          x/y[index()=0]?或x/y[0]

          三、nodeName()

          含義:返回元素的名字,即標記名

          示例:選擇任意元素,假如其名字(即標記名)等于“name”

          *[nodeName()="name"]?或?*[name]


          四、number()

          含義:將值轉換為數值形式,如果不是數值則返回空,要求參數

          示例:年齡(age)??0歲的人的簡歷(resume)

          resume[number(age)?$lt$?30]?或resume[age?$lt$?30]

          五、nodeType()

          含義:返回結點類型,結果為是數值。以下是返回值列表:

          結點類型
          結點類型值?結點的字符形式描述

          Element
          1
          "element"

          Element?Attribute?
          2
          "attribute"

          Markup-Delimited?Region?of?Text?
          3
          "text"

          Processing?Instruction?
          7
          "processing_instruction"

          Comment
          8
          "comment"

          Document?Entity
          9
          "document"

          六、value()

          含義:返回元素或屬性的值

          示例:value()是元素或屬性的缺省方法,以下表示是等價

          name!value()="NAME"與name="NAME"

          @attr="attribute_value"與@attr="attribute_value"

          注:@是屬性前綴,@attr表示是屬性attr


          七、attribute()

          含義:返回所有屬性結點的集合,等價于“@*”

          示例:尋找所有的resume元素,滿足條件至少有一個屬性的值為“ABC”

          resume[$any$?attribute()="ABC"]或resume[$any$?@*="ABC"]

          尋找所有的resume元素,滿足條件至少有一個子元素有一個屬性的值為“ABC”

          resume[$any$?*/attribute()="ABC"]或resume[$any$?*/@*="ABC"]


          八、comment()

          含義:返回所有注釋結點

          示例:例如

          resume[$any$?comment()="禹希初的簡歷"]

          表示尋找含有注釋語句

          <?!--禹希初的簡歷--?>

          的元素<?resume?>


          九、cdata()

          含義:返回所有CDATA類型的結點的集合

          示例:例如?

          resume[$any$?cdata()="禹希初的簡歷"]

          表示尋找含有下述語句(必須是直接子結點)

          <?![CDATA[禹希初的簡歷]]?>

          的元素<?resume?>


          十、node()

          含義:返回當前上下文環境中除根結點和屬性結點以外的所有結點的集合,等價于

          “*?|?pi()?|?comment()?|?text()”

          示例:尋找所有元素resume,其最后一個結點的名字為"skill"

          resume[node()[end()]!nodeName()="skill"]

          尋找所有resume元素的第一個結點:resume/node()[0]


          十一、textnode()

          含義:返回所有文本類型的結點的集合

          示例:尋找每一個p元素的第二個文本結點

          p/textnode(1)或p!textnode(1)

          十二、text()

          含義:返回所有表示文本字符串的結點的集合,等價于"cdata()|textnode()";

            本期的內容就介紹至此,另有一個函數date()在本人的機器上一試就發生錯誤使瀏覽器自動關閉,還有一個函數pi()本人尚未找到適當的應用方法,就不介紹了,下期將講述如何XSL中使用腳本。



          凡是有該標志的文章,都是該blog博主Caoer(草兒)原創,凡是索引、收藏
          、轉載請注明來處和原文作者。非常感謝。

          posted on 2006-04-21 16:54 草兒 閱讀(182) 評論(0)  編輯  收藏 所屬分類: C#+XML
          主站蜘蛛池模板: 拉萨市| 夏邑县| 陕西省| 西畴县| 翁源县| 湖南省| 屯留县| 贡嘎县| 云霄县| 纳雍县| 东丽区| 南通市| 南川市| 府谷县| 玉门市| 南陵县| 乐清市| 神池县| 尚志市| 游戏| 西吉县| 射洪县| 五华县| 章丘市| 黑山县| 裕民县| 襄城县| 长治县| 古浪县| 三穗县| 江西省| 尉犁县| 大余县| 澄江县| 齐齐哈尔市| 于田县| 温州市| 偃师市| 越西县| 伊通| 西盟|