如何使用XPath 1.0选择在特定XML注释之后的元素?

时间:2018-07-22 23:46:21

标签: xml xpath

给定以下XML,如何选择uid元素,其前辈是具有标准化文本值等于“ VID_1128”或“某些标题”的注释?这里的问题是“某些标题”在两个<uid>元素之前,因此我只想选择值为uid的{​​{1}}元素。是否可以使用XPath 1.0?如果可以,怎么办?

3333

1 个答案:

答案 0 :(得分:0)

使用XPath-1.0可以做到这一点,并且实现方法如下:

$rows = $run_q->result_array();
    foreach ($run_q->result_array() as &$get) {
        $totalpoints = $get['i_points'] + $get['group_points'];

        $percent = 17;

        $amountbycustomer = $totalpoints * 26 * $percent;

        $amountbypref = $this->final($get['customer_id'], $percent);

        $finalamount = $amountbycustomer + $amountbypref;

        $get['finalamount'] = $finalamount;
    }
    return $rows;

与您给定的目标有一个区别:

  

规范化文本值等于“ VID_1128” “某些标题”的评论吗?

以上XPath表达式在两个谓词之间遵循/uids/uid[normalize-space(preceding-sibling::comment()[1]) = 'VID_1128' and normalize-space(preceding-sibling::comment()[2]) = 'Some Title'] 而不是and的条件。必须这样做才能仅选择or作为结果。

使用3333而不是or将导致节点集具有两个值:2222和3333-这不是您想要的。