XPath函数——节点集函数
XPath节点集函数是用来处理节点集的函数。主要有count(),position(),last()和name()等。
1、count()函数
count函数用来计算某个节点集合中的节点数目。
简单示例:
xml:
-
<?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:
-
<?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>
结果:
-
messages:1 message:3 messages|message:4
2、position()函数
position()函数用来返回上下文节点在正在处理的节点集合中的位置。
简单示例:
xml:
-
<?xml version="1.0" encoding="UTF-8"?> <root> <e>001</e> <e>002</e> <e>003</e> </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="/"> <xsl:for-each select="root/e"> 第<xsl:value-of select="position()"/>个元素:<xsl:value-of select="."/> </xsl:for-each> </xsl:template> </xsl:stylesheet>
结果:
-
第1个元素:001 第2个元素:002 第3个元素:003
3、last()
last()函数返回正在处理的节点集合中,最后一个节点的位置。
简单示例:
xml:
-
<?xml version="1.0" encoding="UTF-8"?> <root> <e>001</e> <e>002</e> <e>003</e> </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="/"> <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>
结果:
-
001,002,003
4、name()
name()函数用来返回节点集合node-set中第一个节点的节点名称。
简单示例:
xml:
-
<?xml version="1.0" encoding="UTF-8"?> <root> <a>001</a> <b>002</b> <c>003</c> </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="/"> <xsl:value-of select="name(root/*)"/> </xsl:template> </xsl:stylesheet>
结果:
-
a