如何计算xml层次结构中的特定节点取决于XSL中的条件

时间:2009-09-02 12:58:26

标签: xslt xslt-2.0

我在xsl(版本2.0)中编写样式表我想知道如何计算具有特定名称的所有节点,尽管它们不是兄弟姐妹 例如,在下面的xml中,我想计算来自-Milk类型但来自所有商店的产品数量。 我想知道是否有一种方法可以使用count函数而不是在使用Recursion。 对于此示例,结果应为4

<Shops><Shop>
<Product>
    <Name>yogurt</Name>
    <type>Milk</type>
</Product>
<Product>
    <Name>cheese</Name>
    <type>Milk</type>
</Product>
<Product>
    <Name>bread</Name>
    <type>Bakery</type>
</Product> </Shop> <Shop>
<Product>
    <Name>yellow cheese</Name>
    <type>Milk</type>
</Product>
<Product>
    <Name>chocolate milk</Name>
    <type>Milk</type>
</Product>
<Product>
    <Name>bagel</Name>
    <type>Bakery</type>
</Product>
<Product>
    <Name>candy</Name>
    <type>Sweets</type>
</Product>  </Shop></Shops>

2 个答案:

答案 0 :(得分:4)

这可以避免缓慢的“//”运算符。

count(/Shops/Shop/Product[type = 'Milk'])

答案 1 :(得分:2)

count(//Product[type='Milk'])

//在文档中的任何位置查找所有匹配的节点。