2014-04-04 80 views
3

根據以下數據,我需要編寫一個XPath表達式來查找包含至少2個供應商的城市(表達式應返回芝加哥和麥迪遜,因爲它們每個都有2個供應商):選擇「至少2個」XPath表達式

<SuppliersList> 
    <Supplier name="Joe"> 
    <City>Paris</City> 
    <Product name="Airplane"/> 
    <Product name="Milk"/> 
    <Product name="TV"/> 
    <Product name="Orange"/> 
</Supplier> 
    <Supplier name="Herman"> 
    <City>Chicago</City> 
    <Product name="Orange"/> 
</Supplier> 
<Supplier name="Bernstein"> 
    <City>Madison</City> 
    <Product name="Truck"/> 
    <Product name="TV"/> 
    </Supplier> 
<Supplier name="Hunter"> 
    <City>Wausau</City> 
    </Supplier> 
    <Supplier name="Mayer"> 
    <City>Madison</City> 
    </Supplier> 
    <Supplier name="Rosenfeld"> 
    <City>Chicago</City> 
    <Product name="Computer"/> 
    <Product name="Book"/> 
    <Product name="Truck"/> 
    </Supplier> 
</SuppliersList> 

任何幫助,將不勝感激

回答

1
//Supplier[City = following::Supplier/City]/City 

說明:

  • 獲取所有Supplier個元件
    • 哪裏City元素等於任何Supplier/City元件下面當前節點
  • 並採取City元件

當然,這是在一個XSLT模板更容易

編輯

現在我看到你使用XQuery,不XPath的:

DECLARE @x xml 
SET @x = ' 
<SuppliersList> 
    <Supplier name="Joe"> 
    <City>Paris</City> 
    <Product name="Airplane"/> 
    <Product name="Milk"/> 
    <Product name="TV"/> 
    <Product name="Orange"/> 
</Supplier> 
    <Supplier name="Herman"> 
    <City>Chicago</City> 
    <Product name="Orange"/> 
</Supplier> 
<Supplier name="Bernstein"> 
    <City>Madison</City> 
    <Product name="Truck"/> 
    <Product name="TV"/> 
    </Supplier> 
<Supplier name="Hunter"> 
    <City>Wausau</City> 
    </Supplier> 
    <Supplier name="Mayer"> 
    <City>Madison</City> 
    </Supplier> 
    <Supplier name="Rosenfeld"> 
    <City>Chicago</City> 
    <Product name="Computer"/> 
    <Product name="Book"/> 
    <Product name="Truck"/> 
    </Supplier> 
</SuppliersList>' 
SELECT @x.query(' 
    let $cities := //City 
    for $city in distinct-values($cities) 
     where count($cities[. eq $city]) >= 2 
     return $city 
    ') 
+0

錯誤:XQuery的語法 '以下' 不支持。 – user3496312

+0

什麼解析器,XPath版本? –

+0

我並不確定。我們在Management Studio 2008中運行這些,我認爲我們沒有指定版本的Xpath – user3496312