使用Xpath根据属性值检索满足特定条件的节点

时间:2010-04-26 14:12:12

标签: xpath attributes

<AgoraServersConfig>
  <AgoraServers id="NYQ1">
    <AgoraName>prod</AgoraName>
    <TableName>someTable</TableName>
    <Rule_ID>1</Rule_ID>
    <Rule_ID>3</Rule_ID>
    <Rule_ID>5</Rule_ID>
  </AgoraServers>
  <AgoraServers id ="QA03">
    <AgoraName>dev</AgoraName>
    <TableName>someTable</TableName>
    <Rule_ID>1</Rule_ID>
    <Rule_ID>2</Rule_ID>
    <Rule_ID>5</Rule_ID>
  </AgoraServers>
</AgoraServersConfig>

鉴于上述模式,我想知道如何构建一个Xpath查询,该查询返回例如id为“QA03”的节点的子节点。

非常感谢提前

3 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解您的架构,但基于该节点的id属性返回节点的子节点看起来像

//*[@id='QA03']/*

答案 1 :(得分:0)

xpath看起来像这样:

/AgoraServersConfig/AgoraServers[@id='QA03']/*

如果你想做一些更动态的事情,你可以将id放入一个变量,例如

<xsl:variable name="targetid">QA03</xsl:variable>
<xsl:for-each select="/AgoraServersConfig/AgoraServers[@id=$targetid]/*">
    <xsl:copy-of select="."/>
</xsl:for-each>

答案 2 :(得分:0)

使用

<强> /*/*[@id='QA03']/node()

也可以使用标准XPath函数id()

但是,要实现此目的,必须有一个用于将id定义为"ID-type attribute"的XML文档的DTD。

示例id('QA03')/node()