通过在另一个节点内指定的表达式查找节点的 XPath

XPath to find a node by expression specified within another node

我必须通过为每个项目输入一个单一的 XPath (1.0) 来创建一个 XML 映射;工作正常,直到我现在得到一个像这样的 XML 文档:

<PARTIES>       
        <PARTY>         
                <PARTY_ID type="supplier_specific">12345</PARTY_ID>
                <ADDRESS>
                        <NAME>A</NAME>
                </ADDRESS>
        </PARTY>        
        <PARTY>         
                <PARTY_ID type="buyer_specific">54321</PARTY_ID>
                <ADDRESS>
                        <NAME>B</NAME>
                </ADDRESS>
        </PARTY>        
        <PARTY>         
                <PARTY_ID>delivery</PARTY_ID>
                <ADDRESS>       
                        <NAME>C</NAME>
                </ADDRESS>      
        </PARTY>        

        <PARTIES_REFERENCE>
                <BUYER_IDREF type="supplier_specific">12345</BUYER_IDREF>
                <SUPPLIER_IDREF type="buyer_specific">54321</SUPPLIER_IDREF>
                <DELIVERY_IDREF>delivery</DELIVERY_IDREF>
        </PARTIES_REFERENCE>

</PARTIES>

想法是:如果您想要送货地址,请查看 ,从那里获取标识符 ("delivery") 并查找 具有相同的标识符。结果是同一级别的

所以,如果我想知道送货地址的 - 如何使用 single XPath 1.0 表达式到达那里?我已经做了很多映射,但这似乎是下一个级别,如果可能的话。

像这样:

/PARTIES/PARTY[./PARTY_ID=/PARTIES/PARTIES_REFERENCE/DELIVERY_IDREF/text()]/ADDRESS/NAME/text()

我想到了什么:

//PARTY_ID[text()=string(//DELIVERY_IDREF)]/following::NAME[1]/text()

输出:C