• Tags , , , , , , ,         
  • 2017-11-27  18:59:51        
  • 68 °C    

    这部分说的是xsl的语法总结,会不定时更新,方便大家查找与温习

    模式匹配的语法不光可以在<xsl:template>元素的match属性中使用,还可以在<xsl:apply-templates>、<xsl:value-of>、<xsl:for-each>、<xsl:copy-of>、<xsl:sort>、<xsl:variable>和<xsl:param>元素的select属 性中使用。

    下面列出常用的模式匹配的用法:

    1、匹配根节点


    例如:<xsl:template match="/">,表示匹配根节点,就是全部匹配的意思。

    2、匹配元素节点


    例如:<xsl:template match="hotels">,表示匹配hotels元素节点。

    3、使用通配符


    例如:<xsl:template match="*">,表示匹配任何元素。

    4、使用@匹配属性


    用@加上属性的名字,可以用于匹配属性节点。

    例如:<xsl:template match="@mode">,表示匹配mode属性节点。不过要注意的是,XSLT处理器在遍历节点的树状结构时,并不处理属性节点。如果要让处 理器处理属性节点,必须显式调用<xsl:apply-templates>元素,并使用select属性选择属性节点。

    还可以将@与星号(*)一起使用,例如:<xsl:template match="@*">,表示匹配任意的属性节点。

    5、使用斜杠(/)匹配子节点


    例如:<xsl:template match="hotels/hotel">,表示匹配employees元素节点下的任意的employee子节点。

    6、使用双斜杠(//)匹配后代节点


    有时候,希望对某一类元素节点进行处理,而不管该节点在树状结构中所处的位置,就可以使用双斜杠(//)来匹配节点。例 如:<xsl:template match="//room">,表示匹配根节点下任意的name元素节点,而不管该节点所处的位置。例如:<xsl:template match="employees//room">,表示匹配employees元素节点下的任意的name元素节点,这个room节点还有可能在hotel节点的底下的底下。

    7、使用或操作符(|)


    使用或操作符(|)来可选择地匹配多个节点。例如:<xsl:template match="name|age">,表示匹配任意的name或age元素节点。

    例如:<xsl:template match="employee/name!monthly_pay/@mode">,表示匹配employee元素节点下的任意name子节点,或monthly_pay元素节点的mode属性节点。

    8、使用[]操作符


    可以在[]中指定布尔表达式,用于在节点集中更精确地匹配某一个节点。

    例如:如果只想匹配第一个employee元素,可以这样写:<xsl:template match="employee[1]">,表示匹配第一个employee子元素节点。这和上面的写法是等价的:

    <xsl:template match="employee[position()=1]">

    position()是一个函数调用,返回节点在上下文中的当前位置,然后判断该位置是否等于1.

    9、使用node()匹配节点


    node()表示匹配除属性节点和根节点之外的其他任何节点。

    例如:<xsl:template match="node()">.

    10、使用text()匹配文本节点


    text()表示匹配任意的文本节点,例如:<xsl:template match="text()">。

    11、使用processing-instruction()匹配处理指令


    processing-instruction()表示匹配任的处理指令节点。

    例如:<xsl:tempate match="processing-instruction()">。processing-instruction()还可以带一个参数,用于指定处理指令目标的名字,这样,只有和这个名字相同的处理指令才能被匹配。

    12、使用comment()匹配注释


    comment()表示匹配任意的注释节点,例如:<xsl:template match="comment()">。

    13、使用id()进行匹配


    一个ID类型的属性唯一标识了XML文档中的一个元素。

    例如:<xsl:template match="id('E-2001320001')">表示匹配拥有ID类型属性并且其值等于E-2001320001的元素。要注意的是,要让这种方式能够工作,必须在源XML文档的DTD中声明ID类型的属性,可以是内部的或外部的DTD,如果源文档那个没有DTD,则id()函数就不能正常 工作。

    本文内容来自:xsl的语法总结 – Break易站


    ---Author: Arvin Chen ---Web Address: www.breakyizhan.com (Break易站)

     
    转载请保留页面地址:https://www.breakyizhan.com/xml/386.html