2010-10-18 91 views
1

我無法確定如何使用複合XPath查詢選擇數據,以便我可以在數據中找到第5列的行。下面是我的示例XML:使用複合XPath謂詞搜索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> 

基本上所有我需要做的是找到[字段@位置=「2」]時的值字段@位置=「1」]等於2。我嘗試:

OBX[./field[@position='1']='2']/field[@position='2'] 

但這並沒有拿出任何價值。什麼纔是真正實現這個目標的方法?

感謝,

邁克

+0

好問題,+1。查看我的答案以獲得解決方案。 – 2010-10-18 20:52:09

回答

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>