欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

XML入門(mén)教程:XPath-XML/XSLT

互聯(lián)網(wǎng)   發(fā)布時(shí)間:2009-04-02 20:59:35   作者:佚名   我要評(píng)論
XPath是一種用來(lái)從文檔樹(shù)中選擇節(jié)點(diǎn)和節(jié)點(diǎn)集的語(yǔ)言。從XPath的角度來(lái)看,共有七種節(jié)點(diǎn):根節(jié)點(diǎn)、元素節(jié)點(diǎn)、屬性節(jié)點(diǎn)、文本節(jié)點(diǎn)、注釋節(jié)點(diǎn)、處理指令節(jié)點(diǎn)、名稱空間節(jié)點(diǎn)。 XPath是一種用來(lái)從文檔樹(shù)中選擇節(jié)點(diǎn)和節(jié)點(diǎn)集的語(yǔ)言。從

XPath是一種用來(lái)從文檔樹(shù)中選擇節(jié)點(diǎn)和節(jié)點(diǎn)集的語(yǔ)言。從XPath的角度來(lái)看,共有七種節(jié)點(diǎn):根節(jié)點(diǎn)、元素節(jié)點(diǎn)、屬性節(jié)點(diǎn)、文本節(jié)點(diǎn)、注釋節(jié)點(diǎn)、處理指令節(jié)點(diǎn)、名稱空間節(jié)點(diǎn)。
XPath是一種用來(lái)從文檔樹(shù)中選擇節(jié)點(diǎn)和節(jié)點(diǎn)集的語(yǔ)言。從XPath的角度來(lái)看,共有七種節(jié)點(diǎn):

    根節(jié)點(diǎn)
    元素節(jié)點(diǎn)
    屬性節(jié)點(diǎn)
    文本節(jié)點(diǎn)
    注釋節(jié)點(diǎn)
    處理指令節(jié)點(diǎn)
    名稱空間節(jié)點(diǎn)
    CDATA部份,實(shí)體引用和文檔類型聲明不包括在內(nèi),XPath在所有這些項(xiàng)都并入文檔之后才起作用。根節(jié)點(diǎn)和根元素是不同的兩個(gè)概念,根節(jié)點(diǎn)包含整篇文檔,包括根元素。
    本文由腳本之家(http://www.dbjr.com.cn)整理發(fā)布!轉(zhuǎn)載請(qǐng)注明出處,謝謝!

    1.匹配模式
    匹配模板的通用模式
    Table6.1. 模式 描述 match="E" 匹配元素E match="*" 匹配任意元素 match="E|F" 匹配元素E和F match="E/F" 匹配以E為父元素的元素F match="E//F" 匹配以E為根元素的元素F match="/" 匹配根節(jié)點(diǎn) match="text()" 匹配文本節(jié)點(diǎn) match="comment()" 匹配注釋節(jié)點(diǎn) match="processing-instruction()" 匹配處理指令 match="node()" 匹配除屬性節(jié)點(diǎn)和根節(jié)點(diǎn)外的節(jié)點(diǎn) match="id(test)" 匹配具有唯一ID test的元素 match="E[@CLASS="foo"] 匹配元素E,其類屬性為foo match="E[F]" 匹配元素包含有F元素的E元素

    2.XPath軸
    XPath提供了選擇節(jié)點(diǎn)的機(jī)制,兩個(gè)較有用的是軸選擇和謂語(yǔ)選擇,軸指定上下文節(jié)點(diǎn)和要選擇的節(jié)點(diǎn)的關(guān)系。共有十三種軸,最常用的有四種,分別是子軸(child)、屬性軸(attribute)、自已(self)、雙親(parent)。
    Table6.2.XPath軸描述 軸 描述 child 包含當(dāng)前節(jié)點(diǎn)的兒子 descendent 包含當(dāng)前節(jié)點(diǎn)的后代,后代不包含屬性(attribute)或名稱域(namespace)節(jié)點(diǎn) parent 包含當(dāng)前節(jié)點(diǎn)的父親 ancestor 包含當(dāng)前節(jié)點(diǎn)的祖先,祖先總是包含根節(jié)點(diǎn) following-sibling 包含當(dāng)前節(jié)點(diǎn)隨后的所有節(jié)點(diǎn)樹(shù),但不包含attribute或namespace節(jié)點(diǎn) preceding-sibling 包含當(dāng)前節(jié)點(diǎn)之前的所有節(jié)點(diǎn)樹(shù),但不包含attribute或namespace節(jié)點(diǎn) following 包含當(dāng)前節(jié)點(diǎn)隨后的所有節(jié)點(diǎn),following軸排除了當(dāng)前節(jié)點(diǎn)的后代和attribute或namespace節(jié)點(diǎn) preceding 包含當(dāng)前節(jié)點(diǎn)之前的所有節(jié)點(diǎn),following軸排除了當(dāng)前節(jié)點(diǎn)的后代和attribute或namespace節(jié)點(diǎn) attribute 包含當(dāng)前節(jié)點(diǎn)的所有屬性 namespace 包含當(dāng)前節(jié)點(diǎn)的所有namespace節(jié)點(diǎn) self 只包含當(dāng)前節(jié)點(diǎn) descendent-or-self 包含當(dāng)前節(jié)點(diǎn)和當(dāng)前節(jié)點(diǎn)的后代 ancestor-or-self 包含當(dāng)前節(jié)點(diǎn)和當(dāng)前節(jié)點(diǎn)的祖先

    3.謂詞
    XPath表達(dá)式可以匹配多個(gè)節(jié)點(diǎn),如需對(duì)匹配的節(jié)點(diǎn)進(jìn)行進(jìn)一步的篩選,可以使用謂詞。
    Table6.3.選擇節(jié)點(diǎn)常用謂詞 謂詞 描述 select="E" 選擇是當(dāng)前節(jié)點(diǎn)的孩子的E元素 select="" 選擇當(dāng)前節(jié)點(diǎn)的孩子的所有元素 select="text()" 選擇當(dāng)前節(jié)點(diǎn)的文本節(jié)點(diǎn)孩子 select="@name" 選擇當(dāng)前節(jié)點(diǎn)的name屬性 select="@*" 選擇當(dāng)前節(jié)點(diǎn)的所有屬性 select="E[1]" 選擇當(dāng)前節(jié)點(diǎn)的孩子的第一個(gè)E元素 select="E[last()]" 選擇當(dāng)前節(jié)點(diǎn)的孩子的最后一個(gè)E元素 select="*/E" 選擇當(dāng)前節(jié)點(diǎn)的孫了的所有E元素 select="E//F" 選擇從當(dāng)前節(jié)點(diǎn)的孩子的E元素派生而來(lái)的元素F select="//" 選擇根元素 select="//E" 選擇從根節(jié)點(diǎn)派生而來(lái)的E元素 select="//E/F" 選擇所有是從根節(jié)點(diǎn)派生而來(lái)的E元素的孩子的F元素 select="." 選擇當(dāng)前節(jié)點(diǎn) select=".//E" 選擇從當(dāng)前節(jié)點(diǎn)派生而來(lái)的所有E元素 select=".." 選擇當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn) select="../@name" 選擇當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)的name屬性 select="E[@name='foo']" 選擇所有是當(dāng)前節(jié)點(diǎn)的孩子,并且其name屬性具有foo值的E屬性,除等號(hào)外,還可用<,>,<=,>=和!= select="E[@foo and @bar]" 選擇所有包含foo和bar屬性的E元素
    home/person/@id這種定位路徑的寫(xiě)法叫簡(jiǎn)寫(xiě)定位路徑,該寫(xiě)法簡(jiǎn)潔,容易理解,是XSLT匹配模式中最常用的寫(xiě)法。還有一種稱為非簡(jiǎn)寫(xiě)定位路徑的寫(xiě)法,它把節(jié)點(diǎn)測(cè)試和軸結(jié)合在一起,如child::home/child::person/attribute::id。該寫(xiě)法在實(shí)際使用中不常用,但它具有非常重要的性能因此有必要了解。

    4.XPath表達(dá)式
    位置路徑是XPath的一個(gè)最常用的表達(dá)式,用以標(biāo)識(shí)XML文檔的節(jié)點(diǎn)集。除此之上,XPath表達(dá)式還可返回?cái)?shù)字、布爾和字符串。非節(jié)點(diǎn)集的XPath表達(dá)式不能用于xsl:template元素的match屬性中。它們用于xsl:value-of元素的select屬性值或用于位置路徑的謂詞中。
    本文由腳本之家(http://www.dbjr.com.cn)整理發(fā)布!轉(zhuǎn)載請(qǐng)注明出處,謝謝!
    每個(gè)XPath位置路徑可分為一步名多步,每步以“/”號(hào)分隔,如:
    room[\@name=$root]/date[year=$year and month=$month]/meeting
    上下文節(jié)點(diǎn)即當(dāng)前正在處理的節(jié)點(diǎn),也就是位置路徑定位的當(dāng)前節(jié)點(diǎn)。上下文在XPath表達(dá)式計(jì)算前被創(chuàng)建,由XSLT處理器創(chuàng)建。處理每一步后,上下文都會(huì)改變。
    位置路徑中的步可分為三部份:軸(axis)、節(jié)點(diǎn)測(cè)試(note test)和謂詞(predicate),它的寫(xiě)法如下:
    axis::note-test[predicate]
    軸和節(jié)點(diǎn)測(cè)試之間用“::”分開(kāi),每個(gè)謂詞由括號(hào)[]括起來(lái)。
    要設(shè)計(jì)好一個(gè)位置路徑,需確保在每一步選擇最少的節(jié)點(diǎn),使用最嚴(yán)格的軸,用最嚴(yán)格的節(jié)點(diǎn)測(cè)試。避免使用謂詞,因?yàn)橛奢S和節(jié)點(diǎn)測(cè)試選擇的節(jié)點(diǎn)集的每個(gè)節(jié)點(diǎn)都會(huì)用作謂詞的上下文節(jié)點(diǎn)。對(duì)于位置路徑的三步,最節(jié)省的是節(jié)點(diǎn)測(cè)試。
    XPath中的所有數(shù)字都是8個(gè)字節(jié)的IEEE754浮點(diǎn)雙精度類型,與java的double類型相同??杀硎菊裏o(wú)窮大、負(fù)無(wú)窮大和NaN(零除零)值。支持五種運(yùn)算符,分別是加( )、減(-)、乘(*)、除(div)、取余(mod)。
    XPath中的字符串是Unicode字符,用單引號(hào)或雙引號(hào)定界??梢允褂?和!=對(duì)字符進(jìn)行比較,也可用<,>,<=,>關(guān)系運(yùn)算符,但比較的兩個(gè)字符必須是數(shù)字,否則比較結(jié)果沒(méi)有意義。
    XPath中的布爾值常用于位置路徑的謂詞中,如/person[name="debian"]。布爾值還常用于xsl:if和xsl:when元素的test屬性中。如:
    <xsl:template match="home"> <xsl:if test = ".='debian' or .='redhat'"> <xsl:value-of select = "." /> </xsl:if> </xsl:template>

    5.XPath函數(shù)
    XPath還提供很多函數(shù),用于表達(dá)式和謂詞。XPath函數(shù)的返回值有四種類型,分別是:

      布爾值,如:true()返回ture(真),false()返回false(假),not()對(duì)布爾值取反。
      數(shù)字,如:number()把任意類型轉(zhuǎn)化數(shù)字,celing()返回大于或等于參數(shù)的最小整數(shù)。
      節(jié)點(diǎn)集,如:position()返回當(dāng)有節(jié)點(diǎn)在上下節(jié)點(diǎn)列表中的位置,count()可統(tǒng)計(jì)節(jié)點(diǎn)數(shù)。
      字符串,如:string()轉(zhuǎn)化任意類型為字符串,string-length()返回字符串長(zhǎng)度。

相關(guān)文章

  • MIME類型中application/xml與text/xml的區(qū)別介紹

    這篇文章介紹了MIME類型中application/xml與text/xml的區(qū)別,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-28
  • 詳解XML中的模式Schema

    XML中擁有Schema特性,能夠比DTD更加強(qiáng)大地引入元素結(jié)構(gòu),下面我們就來(lái)詳解XML中的模式Schema的概念及作用和用法,需要的朋友可以參考下
    2021-11-30
  • XML基本概念入門(mén)學(xué)習(xí)指南

    這篇文章主要介紹了XML基本概念入門(mén)學(xué)習(xí)指南,包括其與HTML的關(guān)系以及元素和特殊標(biāo)簽等,需要的朋友可以參考下
    2016-06-24
  • XML中的DTD文檔類型定義完全解析

    XML標(biāo)簽的自定義功能非常強(qiáng)大,比如本文將要講解的DTD(Document Type Definition)就帶給人們一種面向?qū)ο蟀愕母杏X(jué),well,下面就來(lái)看一下XML中的DTD文件類型定義完全解析
    2016-06-24
  • 簡(jiǎn)介XML文檔的閱讀與編輯

    這篇文章主要介紹了XML文件的閱讀與編輯,最常用的工具當(dāng)然還是瀏覽器中的控制臺(tái)與源代碼查看,需要的朋友可以參考下
    2016-02-16
  • 簡(jiǎn)單了解XML中的命名空間

    這篇文章主要介紹了XML的命名空間,包括命名空間的聲明等XML入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-02-16
  • 解析XML中的樹(shù)形結(jié)構(gòu)與DOM文檔對(duì)象模型

    這篇文章主要介紹了XML中的樹(shù)形結(jié)構(gòu)與DOM文檔對(duì)象模型,文中舉了JavaScript解析DOM對(duì)象的例子,需要的朋友可以參考下
    2016-02-15
  • 詳解XML編程中的模式定義XSD

    這篇文章主要介紹了詳解XML編程中的模式定義XSD,講解了如何在XML文檔中聲明模式及定義類型等內(nèi)容,需要的朋友可以參考下
    2016-02-15
  • 深入解析XML中的DTD文檔類型定義

    這篇文章主要介紹了XML中的DTD文檔類型定義,是XML入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-02-15
  • 淺談XML代碼編寫(xiě)的編碼與驗(yàn)證問(wèn)題

    這篇文章主要介紹了XML代碼編寫(xiě)的編碼與驗(yàn)證問(wèn)題,與HTML類似,XML文件的編碼也能在序言部分被指定,需要的朋友可以參考下
    2016-02-15

最新評(píng)論