XPath:选择具有属性子节点的父节点

时间:2011-11-02 16:35:07

标签: xpath

我希望获得“Package”节点,其中“System”孙子具有“mtm”属性,“mtm”属性的值为“2055”。对于以下示例文档,只应返回第一个Package节点。

我用

"/Database/Package[/SystemCompatibility/System[@mtm='2055']]"

但它不起作用。这个表达有什么问题?

<?xml version="1.0" encoding="UTF-8"?>
<Database version="300">
<Package id="6imb05ww" description="ThinkPad Modem Adapter">  
    <SystemCompatibility>
        <System mtm="8742" os="Windows XP" oslang="en" />
        <System mtm="2055" os="Windows XP" oslang="jp" />
    </SystemCompatibility>
</Package>
<Package id="6imb06ww" description="ThinkPad Modem Adapter">  
    <SystemCompatibility>
        <System mtm="3046" os="Windows XP" oslang="en" />
    </SystemCompatibility>
</Package>
</Database>

2 个答案:

答案 0 :(得分:13)

删除/

之前的SystemCompatibility
/Database/Package[SystemCompatibility/System[@mtm='2055']]

答案 1 :(得分:2)

尝试使用:

/Database/Package/descendant::System[@mtm='2055']

使用descendant :: operator将允许您获取Package的任何System孙子。 http://www.w3schools.com/xpath/xpath_axes.asp