查找给定子元素值的第二个元素的XPath?

3

我需要查找城市为芝加哥的第二个供应商。

我已经创建了以下表格。

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
我必须找出第二家位于芝加哥的供应商。 - Wisco Gold
这个问题非常 - 呃 - 和这个问题相关... - Shnugo
1个回答

2

这个XPath,

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

按照要求,将选择第二个 供应商,其 "城市""芝加哥"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接