Xml XPath使用提供的较低节点值获取较高节点值

Xml XPath使用提供的较低节点值获取较高节点值,xml,xpath,Xml,Xpath,我有以下两个元素之间SData事件不同的节点值,当仅提供FormData“PEMD”和ItemData“2019-12-18”时,需要返回事件值“WK1” 我不能提供主题值,因为这将是未知的,只有ItemData值 <Data> <Data1 Study="R1979" MetaDataVersionOID="6713"> <Data2 Subject="4100"> <SData Event="SCN" key="WK1[1]"

我有以下两个元素之间SData事件不同的节点值,当仅提供FormData“PEMD”和ItemData“2019-12-18”时,需要返回事件值“WK1” 我不能提供主题值,因为这将是未知的,只有ItemData值

<Data>
<Data1 Study="R1979" MetaDataVersionOID="6713">
    <Data2 Subject="4100">
        <SData Event="SCN" key="WK1[1]">
            <FormData Form="PEMD" FormKey="1">
                <ItemData Item="PM" Value="1"/>
                <ItemData Item="PE" Value="1"/>
                <ItemData Item="DATE" Value="2020-01-01"/>
            </FormData>
        </SData>
    </Data2>
</Data1>
<Data1 Study="R1979" MetaDataVersionOID="6713">
    <Data2 Subject="4200">
        <SData Event="WK1" key="WK1[1]">
        <FormData Form="PEMD" Formkey="1">
        <ItemData Item="PM" Value="1"/>
        <ItemData Item="PE" Value="1"/>
        <ItemData Item="DATE" Value="2019-12-18"/>
        </FormData>
        </SData>
    </Data2>
</Data1>
这个XPath

//SData[FormData[@Form="PEMD"]/ItemData[@Item="DATE"]/@Value="2019-12-18"]/@Event
将根据请求返回
Event=“WK1”
属性。

备选方案:

//FormData[@Form="PEMD"][./ItemData[@Value="2019-12-18"]]/../@Event
查找具有特定属性(属性:
PEMD
)的
FormData
元素和特定的
ItemData
子元素(属性:
2019-12-18
)。然后获取父元素(
)的属性(
@Event

输出:
WK1

//FormData[@Form="PEMD"][./ItemData[@Value="2019-12-18"]]/../@Event