专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > XML/SOAP

计算xml特定条件的节点个数,用xpath来,该如何解决

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
计算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>
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: