0

这是我的xml的两个摘录。

摘录一:

<tr>
    <td>
        <label>Attribute Name</label>
    </td>
    <td>
        <input>
        <div class="formCellError">Error message</div>
    </td>
</tr>

摘录二:

<tr>
    <td>
        <span>
            <b>
                <label>Attribute Name</label>
            </b>
        </span>
        <input>
        <div class="formCellError">Error message</div>
    </td>
</tr>

如您所见,这些节点的结构不同。在第一个摘录中<label>并且<div>在同一个<td>标​​签内,而在第二个摘录中<label>并且<div>在不同的<td>标签内。

我需要测试,在同一个节点中是否有一个带有错误消息的<td>节点,或者至少在前面的兄弟<td>节点中。<td>节点由标签指定

您是否有想法,如何使用单个 X 路径表达式检测节点的存在?我设计了一个解决方案,即检索<tr>标签然后对其进行分析,但它太复杂而无法支持并且速度很慢。

4

3 回答 3

1

查看示例,您不是在寻找前一个同级中的错误,而是在后一个同级中查找错误。如果不是,请修改查询以改用preceding-sibling轴步长。

您可能必须先删除(: comments :)才能运行;我使用 XQuery 注释语法来解释查询。

//td                                  (: find table cells :)
  [.//label]                          (: having a label in it :)
  [
    .//div[@class='formCellError']    (: and an error in the same cell :)
      or
    following-sibling::td[1]//div[@class='formCellError'] (: the following cell :)
  ]
于 2013-08-30T16:40:57.830 回答
0

如果您要问如何找到包含具有“formCellError”类的 DIV 的所有 TR 节点,那么您可以使用此 XPath 执行此操作:

//tr[.//div[@class='formCellError']]

如果您要询问如何查找 TR 中包含“formCellError”类的 DIV 的所有标签,请使用此 XPath:

//tr[.//div[@class='formCellError']]//label
于 2013-08-30T12:51:01.023 回答
0

以下 XPath 表达式检测位于特定属性旁边的特定错误。适用于 Excerpt I 和 Excerpt II

//tr[//label/text()='Attribute Name' and //div[@class='formCellError' and text()='Error message'] ]
于 2015-04-09T13:49:51.027 回答