计算第二个列表的条件

时间:2014-10-27 11:12:48

标签: xslt xpath xslt-1.0

XML I :(例如购物车,图片库)

<list1>
    <entry>
        ...
        <items>
            <item id="1"></item>
            <item id="2"></item>
            <item id="3"></item>
        </items>
    </entry>
</list1>

XML II :( =相关项目)

<list2>
    <entry id="1">
        ...
        <visibility>
            <item value="public">Public</item>
        </visibility>
    </entry>
    <entry id="3">
        ...
        <visibility>
            <item value="private">Private</item>
        </visibility>
    </entry>
    <entry id="5">
        ...
        <visibility>
            <item value="public">Public</item>
        </visibility>
    </entry>
</list2>

注意:list2中的ID可能匹配与否......

如何获取列表1中具有ID列表2和/ visibility / item / @ value ='public'的项目数?

1 个答案:

答案 0 :(得分:1)

使用XSLT 1.0,您可以使用count(/list1/entry/item[@id = document('xml2.xml')/list2/entry[visibility/item/@value = 'public']/@id])

使用XSLT 2.0一键

<xsl:template name="k1" match="list2/entry[visibility/item/@value = 'public']" use="@id"/>

然后

count(/list1/entry/item[key('k1', @id, document('xml2.xml'))])

使查找更有效率。