XPath函数——节点集函数

       XPath节点集函数是用来处理节点集的函数。主要有count(),position(),last()和name()等。

      1、count()函数

      count函数用来计算某个节点集合中的节点数目。

      简单示例:

      xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <messages>
       <message id="1">This is a test message</message>
       <message id="2">This is a test message</message>
       <message id="3">This is a test message</message>
    </messages>

     xslt:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="text" version="1.0" encoding="gb2312" indent="yes"/>    
        <xsl:template match="/">
            messages:<xsl:value-of select="count(messages)"/>
            message:<xsl:value-of select="count(messages/message)"/>
            messages|message:<xsl:value-of select="count(messages|messages/message)"/>
        </xsl:template>
    </xsl:stylesheet>

     结果:

  1.         messages:1
            message:3
            messages|message:4

   

      2、position()函数

      position()函数用来返回上下文节点在正在处理的节点集合中的位置。

      简单示例:

      xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <e>001</e>
       <e>002</e>
       <e>003</e>
    </root>

      xslt:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="text" version="1.0" encoding="gb2312" indent="yes"/>    
        <xsl:template match="/">
            <xsl:for-each select="root/e">
    <xsl:value-of select="position()"/>个元素:<xsl:value-of select="."/>        
            </xsl:for-each>
        </xsl:template>
    </xsl:stylesheet>

      结果:

  1.             第1个元素:001
              第2个元素:002
              第3个元素:003

 

      3、last()

      last()函数返回正在处理的节点集合中,最后一个节点的位置。

     简单示例:

     xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <e>001</e>
       <e>002</e>
       <e>003</e>
    </root>

     xslt:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="text" version="1.0" encoding="gb2312" indent="yes"/>    
        <xsl:template match="/">
            <xsl:for-each select="root/e">
                 <xsl:value-of select="."/>
                 <xsl:if test="position()!=last()">
                    <xsl:text>,</xsl:text>             
                 </xsl:if>        
            </xsl:for-each>
        </xsl:template>
    </xsl:stylesheet>

     结果:

  1. 001,002,003

   

      4、name()

      name()函数用来返回节点集合node-set中第一个节点的节点名称。

     简单示例:

     xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <a>001</a>
       <b>002</b>
       <c>003</c>
    </root>

     xslt:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="text" version="1.0" encoding="gb2312" indent="yes"/>    
        <xsl:template match="/">
            <xsl:value-of select="name(root/*)"/>
        </xsl:template>
    </xsl:stylesheet>

      结果:

  1. a
posted @ 2010-01-17 20:53  Asharp  阅读(5413)  评论(0编辑  收藏  举报