如果xpath中不存在兄弟节点子节点,请选择节点

时间:2013-06-25 01:30:04

标签: xml xpath

我需要在这种情况下选择6789没有元数据元素的标识符

<dt class="document-metadata">Metadata</dt>

在dd @ class = document-manifest兄弟之下,可以使用类或文本检查,因为它不会改变。

<dt class="document-manifest">
    <a class="document" href="/Document/12345">12345</a>
</dt>
<dd class="document-manifest">
    <dl class="document-manifest-items">
        <dt class="document-summary">Document Summary</dt>
        <dd class="document-summary">
            <dl class="document-summary">
                <dt class="document-metadata">MetaData</dt>
            </dl>
        </dd>
    </dl>
</dd>
<dt class="document-manifest">
    <a class="document" href="/Document/6789">6789</a>
</dt>
<dd class="document-manifest">
    <dl class="document-manifest-items">
        <dt class="document-summary">Document Summary</dt>
        <dd class="document-summary">
            <dl class="document-summary">
            </dl>
        </dd>
    </dl>
</dd>

在这种情况下,它应该只选择6789标识符。

我尝试过很多东西似乎无法做到。

如果它具有元数据

,那么类似以下内容的工作似乎会返回id
//dt[@class='document-manifest']/a[not(../dd/dl/dd/dl/dt[@class='document-metadata'])]

1 个答案:

答案 0 :(得分:1)

这似乎有用,虽然

可能是更好的方法
//dt[@class='document-manifest']/a[../following-sibling::*[1]/dl/dd[@class='document-summary']/dl/not(dt='MetaData')]