1

我在形成正确的 xpath 表达式以在 xml 中查找数据时遇到问题,类似于以下内容:

<record>
<datafield tag="675" ind1=" " ind2=" ">
    <subfield code="a">791.221.4(71+44+469+450)(086.82)</subfield>
    <subfield code="c">791.2</subfield>
    <subfield code="s">791.2</subfield>
    <subfield code="b">791.2</subfield>
    <subfield code="v">UDCMRF 2006</subfield>
</datafield>
<datafield tag="702" ind1="1" ind2="1">
    <subfield code="3">39609187</subfield>
    <subfield code="a">Cronenberg</subfield>
    <subfield code="b">David</subfield>
    <subfield code="f">1943-</subfield>
    <subfield code="4">300</subfield>
    <subfield code="4">690</subfield>
</datafield>
<datafield tag="702" ind1="0" ind2="1">
    <subfield code="3">16448611</subfield>
    <subfield code="a">Suschitzky</subfield>
    <subfield code="b">Peter</subfield>
    <subfield code="4">600</subfield>
</datafield>
<datafield tag="702" ind1="0" ind2="1">
    <subfield code="3">8497763</subfield>
    <subfield code="a">Shore</subfield>
    <subfield code="b">Howard</subfield>
    <subfield code="4">230</subfield>
</datafield>
</record>

如何构建一个基本上说的表达式:搜索标签值为 702 的数据字段,并在代码 4 的子字段中返回我的姓氏和值为 300 的人的姓名 - 这样在这种情况下的答案将是 Cronenberg David?

提前致谢。

4

2 回答 2

1
datafield[@tag="702"][./subfield[@code="4" and .="300"]]

将选择所需的数据字段元素。

datafield[@tag="702"][./subfield[@code="4" and .="300"]]/subfield[@code="a" or @code="b"]/text()

['Cronenberg', 'David']假设子字段在文档中按该顺序出现,将返回

于 2013-03-22T14:44:21.690 回答
1

使用

/*/*[@tag=702 and subfield[@code=4]=300]
         /subfield[@code='a' or @code='b']/text()
于 2013-03-22T15:25:31.883 回答