Xml 计算子树中前面节点的XSL

Xml 计算子树中前面节点的XSL,xml,xslt,xpath,Xml,Xslt,Xpath,给定以下XML <?xml version="1.0"?><?xml-stylesheet type="text/xsl"?> <root> <hi> <hello-world><greeter> a </greeter><greeter> b </greeter></hello-world> <hello-world><greeter> c <

给定以下XML

<?xml version="1.0"?><?xml-stylesheet type="text/xsl"?>

<root>

<hi>
<hello-world><greeter> a </greeter><greeter> b </greeter></hello-world>
<hello-world><greeter> c </greeter><greeter> d </greeter></hello-world> 
</hi>

<hi>
<hello-world><greeter> e </greeter><greeter> f </greeter></hello-world>
<hello-world><greeter> g </greeter><greeter> h </greeter></hello-world>
</hi>

</root>
鉴于我需要:

+1+2+3+4
+1+2+3+4
我试过祖先::嗨//迎宾祖先::嗨//前辈::迎宾祖先::嗨//前辈::迎宾等,但没有用

我怎样才能做到这一点


谢谢你的帮助

你犯的错误是,你上了祖父母一级,从那里数一数孙子孙女。不管哪个孙子问,这个数字总是一样的

尝试以下方法:

<xsl:template match="/">
<xsl:for-each select="root/hi/hello-world/greeter" >
    <xsl:text>+</xsl:text>
    <xsl:number from="hi" level="any"/>
</xsl:for-each >
</xsl:template>

+
根据需要的输出类型,您需要添加包装元素或分隔符

+1+2+3+4
+1+2+3+4
<xsl:template match="/">
<xsl:for-each select="root/hi/hello-world/greeter" >
    <xsl:text>+</xsl:text>
    <xsl:number from="hi" level="any"/>
</xsl:for-each >
</xsl:template>