XPath函数——布尔型函数

    布尔型函数是用于操作布尔型数据的函数,常有的有boolean(),ture(),false(),not(),lang().

    1、boolean()

    boolean(xpathExpression)函数用于将参数xpathExpression值转换为布尔型。对应数值型,如果数值等于0,boolean()函数返回false,其他返回true;对于节点如果节点存在返回true,否则返回false。

    简单示例:

    xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <numbers>
        <number>-1</number>
        <number>0</number>
        <number>0.1</number>
        <number>1</number>
        <number>2.1</number>
        <number>abc</number>
    </numbers>

     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="/numbers">
           <xsl:for-each select="number">
                <xsl:value-of select="concat('convert ',.,' to  boolean:',boolean(number())) "/>
                <xsl:text>&#x000A;</xsl:text>       
           </xsl:for-each>
           <xsl:value-of select="concat('convert element number to  boolean:',boolean(number)) "/>
           <xsl:text>&#x000A;</xsl:text>
          <xsl:value-of select="concat('convert element noexistele to  boolean:',boolean(noexistele)) "/>
        </xsl:template>
    </xsl:stylesheet>

     结果:

  1. convert -1 to  boolean:true
    convert 0 to  boolean:false
    convert 0.1 to  boolean:true
    convert 1 to  boolean:true
    convert 2.1 to  boolean:true
    convert abc to  boolean:false
    convert element number to  boolean:true
    convert element noexistele to  boolean:false

 

    2、true()

    true()函数用于返回布尔型的true,无参数。

 

    3、false()

    false()函数用于返回布尔型的false,无参数。

 

    4、not()

    not(xpathExpression)函数用于返回XPath表达式所代表的布尔值的相反值。

    简单示例:

    xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <root><element/></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="/root">
           <xsl:value-of select="concat('not(element) is:',not(element)) "/>
           <xsl:text>&#x000A;</xsl:text>
          <xsl:value-of select="concat('not(noexistele) is:',not(noexistele)) "/>
        </xsl:template>
    </xsl:stylesheet>

     结果:

  1. not(element) is:false
    not(noexistele) is:true

 

    5、lang()

    lang(string)函数用于判断上下文节点的xml:lang属性是否等于参数string。如果上下文节点没有设置xml:lang属性,lang()将按照上下文节点的最近祖先节点继承,如果都没有则返回false;lang()函数不对上下文的节点内容进行判断,只是判断其xml:lang属性;在比较的时候,不区分大小写。

    简单示例:

    xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <article>
        <title xml:lang="en">the article title</title>
        <para xml:lang="zh-cn">文章段落</para>
        <para xml:lang="FFF">文章段落</para>
    </article>

    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="/article">
           <xsl:apply-templates select="title"/>
           <xsl:apply-templates select="para"/>
        </xsl:template>
        <xsl:template match="title">
            <xsl:value-of select="lang('en')"/>
            <xsl:text>&#x000A;</xsl:text>    
        </xsl:template>
        <xsl:template match="para">
            <xsl:value-of select="lang('zh-cn')"/>
            <xsl:text>&#x000A;</xsl:text>    
        </xsl:template>
    </xsl:stylesheet>

     结果:

  1. true
    true
    false
posted @ 2010-01-18 21:16  Asharp  阅读(2662)  评论(0编辑  收藏  举报