具有给定子值的第二个元素的XPath?

时间:2017-12-07 00:38:18

标签: xml xpath

我必须找出第二个SupplierChicago作为城市。

我创建了下表。

CREATE TABLE Tb_Supplier(
XMLColumn XML)
GO

INSERT Tb_XPathQueryTable VALUES(
    '<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 XMLColumn.query('/SuppliersList/Supplier/City[text()="Chicago"]/../Supplier[2]')
FROM Tb_Supplier

当我在没有/Supplier[2]的情况下使用上述代码时,它会显示芝加哥的两个供应商。

输出应该有

  <Supplier name="Rosenfeld">
    <City>Chicago</City>
    <Product name="Computer"/>
    <Product name="Book"/>
    <Product name="Truck"/>
  </Supplier>

1 个答案:

答案 0 :(得分:2)

这个XPath,

(/SuppliersList/Supplier[City="Chicago"])[2]

将根据要求选择第Supplier"Chicago"作为City