xpath可以搜索子节点并返回不同的节点吗?

时间:2014-07-14 21:42:23

标签: xml xpath

我可以从以下

中隔离“首字母缩略词”子节点
<tr id="PRO_0000155160">
  <td>
    <input type="checkbox" class="cart-item" onclick="addOrAppendCart('P19614_1-66_', 'section_features')" id="checkbox_P19614_1-66_" />
  </td>
  <td style="white-space:nowrap;">
    <acronym title="Extent of a polypeptide chain in the mature protein." onclick="dialog('chain'); Event.stop(event || window.event); return false" onmousedown="Event.stop(event || window.event);">Chain</acronym>
  </td>
  <td class="numeric">
    <a href="/blast/?about=P19614[1-66]">1 – 66</a>
  </td>
  <td class="numeric">66</td>
  <td>Type-3 ice-structuring protein HPLC 12</td>
  <td style="text-align:center" class="ft-sequence">
    <table class="sequence" style="cursor:pointer" onclick="window.location.href='../blast/?about=P19614[1-66]'" title="Length: 66">
      <tr>
        <td style="width:100%;" class="feature chain"> </td>
      </tr>
    </table>
  </td>
  <td>
    <span style="font-size: small;">PRO_0000155160</span>
  </td>
</tr> 

做:

//tr[contains(@id, '_')]//acronym[contains(@onclick,'chain')]

但是我想要返回它上面的“输入”节点(第3行)或它下面的“href”节点(第9行)。

通常情况下,我会写一个直接拉出输入或href节点的xpath查询,但是首字母缩写节点必须填写我的问题的某个标准 - 即在onclick属性中包含单词“chain”。 / p>

执行此操作可确保我拥有正确的“tr”根节点(主xml文件中有多个tr),但正如我所提到的 - 我需要该特定tr根节点的输入或href节点。

这可能吗?我已经尝试将../附加到查询的末尾,但这不起作用。

1 个答案:

答案 0 :(得分:1)

&#34;上述&#34;误导了你。 &#34;前述&#34;会让你更接近。

详细说明您正在尝试做的事情。在所选的acronym中,您需要最近的<input>元素,因此请在路径末尾添加/preceding::input[1]。 (需要[1],否则您将匹配文档中较早的所有<input>元素。

同样,使用following::轴在文档中稍后查看,没有结构约束。

(或者您可以更明确地确定所需节点相对于您找到的节点的确切位置,如果文档结构不像此处所示那么简单,那么这将更加健壮,并且可以提高性能。但是,您需要根据确切知道输入文档中的内容来设计这些内容。)