读书人

计算xml特定条件的节点个数用xpath来

发布时间: 2012-04-12 15:46:35 作者: rapoo

计算xml特定条件的节点个数,用xpath来
有如下一个XML文件:

XML code
<A>   <B>        <SF1>b1-SF1-1</SF1>           <SF1>b1-SF1-2</SF1>        <SF2>b1-SF2-1</SF2>        <SF3>b1-SF3-1</SF3>        <SF3>b1-SF3-2</SF3>        <SF3>b1-SF3-3</SF3>        <SF3>b1-SF3-4</SF3>   </B>   <B>        <SF1>b2-SF1-1</SF1>           <SF1>b2-SF1-2</SF1>        <SF2>b2-SF2-1</SF2>        <SF3>b2-SF3-1</SF3>        <SF3>b2-SF3-2</SF3>        <SF3>b2-SF3-3</SF3>        <SF3>b2-SF3-4</SF3>   </B>   <C>        <SF1>c1-SF1-1</SF1>        <SF4>c1-SF4-1</SF4>        <D>test</D>   </C>   <E>EE</E>   <SF4>root1></SF4>   <SF2>root2></SF2></A>

计算以SF开头的节点个数,怎样计算啊?是用XML编程,如xpath,是动态的计算,谢谢!本人想到一个:<xsl:value-of select="count(//SF1) + count(//SF2) + count(//SF3) + count(//SF4)">,不过是静态的,不合要求。因为节点是通for-each动态生成的!

[解决办法]
XML code
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"><xsl:value-of select="count(//node()[substring(name(),1,2)='SF'])" /></xsl:template></xsl:stylesheet>
[解决办法]
XML code
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"><xsl:value-of select="count(/A/B[position()=1]/node()[position()=3 or position()=4][substring(name(),1,2)='SF'])" /><br/><br/><xsl:for-each select="/A/B[position()=1]/node()[position()=3 or position()=4]"><li><xsl:value-of select="."/></li></xsl:for-each><br/><br/><xsl:for-each select="/A/B[position()=2]/node()[position()=1 or position()=last()]"><li><xsl:value-of select="."/></li></xsl:for-each><br/><br/><xsl:for-each select="/A/SF2"><li><xsl:value-of select="." /></li></xsl:for-each></xsl:template></xsl:stylesheet> 

读书人网 >XML SOAP

热点推荐