2014-10-27 69 views
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> 

通知:ID在list2可能匹配或不...

如何獲得在list2中具有ID和/ visibility/item/@ value ='public'的list1項目的計數?

回答

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'))]) 

使得查找更有效。

+0

美麗,非常感謝。 – hcm 2014-10-27 12:06:34