XPath函数——布尔型函数
布尔型函数是用于操作布尔型数据的函数,常有的有boolean(),ture(),false(),not(),lang().
1、boolean()
boolean(xpathExpression)函数用于将参数xpathExpression值转换为布尔型。对应数值型,如果数值等于0,boolean()函数返回false,其他返回true;对于节点如果节点存在返回true,否则返回false。
简单示例:
xml:
-
<?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:
-
<?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>
</xsl:text> </xsl:for-each> <xsl:value-of select="concat('convert element number to boolean:',boolean(number)) "/> <xsl:text>
</xsl:text> <xsl:value-of select="concat('convert element noexistele to boolean:',boolean(noexistele)) "/> </xsl:template> </xsl:stylesheet>
结果:
-
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:
-
<?xml version="1.0" encoding="UTF-8"?> <root><element/></root>
xslt:
-
<?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>
</xsl:text> <xsl:value-of select="concat('not(noexistele) is:',not(noexistele)) "/> </xsl:template> </xsl:stylesheet>
结果:
-
not(element) is:false not(noexistele) is:true
5、lang()
lang(string)函数用于判断上下文节点的xml:lang属性是否等于参数string。如果上下文节点没有设置xml:lang属性,lang()将按照上下文节点的最近祖先节点继承,如果都没有则返回false;lang()函数不对上下文的节点内容进行判断,只是判断其xml:lang属性;在比较的时候,不区分大小写。
简单示例:
xml:
-
<?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:
-
<?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>
</xsl:text> </xsl:template> <xsl:template match="para"> <xsl:value-of select="lang('zh-cn')"/> <xsl:text>
</xsl:text> </xsl:template> </xsl:stylesheet>
结果:
-
true true false