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