我无法确定如何使用复合XPath查询选择数据,这样我就可以在数据中找到第5行。这是我的示例XML:
<sample>
<OBX>
<field position="1">1</field>
<field position="2">My Value</field>
</OBX>
<OBX>
<field position="1">2</field>
<field position="2">My other (and more important) value</field>
</OBX>
</sample>
基本上我需要做的是在[field @ position ='1']等于2时找到[field @ position ='2']的值。我正在尝试:
OBX[./field[@position='1']='2']/field[@position='2']
但这没有任何价值。完成这项工作的正确方法是什么?
谢谢,
麦克
答案 0 :(得分:1)
我已验证此XPath表达式:
/*/OBX[field[@position='1']='2']/field[@position='2']
根据提供的XML文档进行评估时:
<sample>
<OBX>
<field position="1">1</field>
<field position="2">My Value</field>
</OBX>
<OBX>
<field position="1">2</field>
<field position="2">My other (and more important) value</field>
</OBX>
</sample>
会选择所需的节点
以下是使用XSLT作为XPath托管语言的演示:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:copy-of select="/*/OBX[field[@position='1']='2']/field[@position='2']"/>
</xsl:template>
</xsl:stylesheet>
对提供的XML文档应用此转换时,会生成正确的结果:
<field position="2">My other (and more important) value</field>