在XSLT 1中执行Sum时使用多个过滤器



XML:

<A>
<B>
<C name="test name1" age="10">
<id>1</id>
<address/>
</C>
<C name="test name2" age="20">
<id>2</id>
<address>test address</address>
</C>
<C name="test name3" age="30">
<id>3</id>
<address/>
</C>
</B>
</A>

在这个XML中,我想获得所有C语言年龄的总和,其中name不包含字符串&地址为空

我尝试过的XSLT/XPath片段:

<xsl:variable name="total-age" select="sum(A/B/C[not(contains(@name,'testString')) and (address = '')]/@age)" />

<xsl:variable name="total-age" select="sum(A/B/C[not(contains(@name,'testString'))] [address = '']/@age)" />

如果我只使用一个过滤器,比如<xsl:variable name="total-age" select="sum(A/B/C [address = '']/@age)" /><xsl:variable name="total-age" select="sum(A/B/C[not(contains(@name,'testString'))]/@age)" />,它将为特定的过滤器工作,但是当我添加两个过滤器时,它不工作。如何使两个过滤器都工作?我使用XSLT/XPATH 1版本

我想获得所有C的年龄的总和,其中名称不包含字符串&地址为空

我想应该是:

sum(/A/B/C[not(contains(@name,'testString')) and not(address/text())]/@age)

最新更新