0

所以我被困在使用 Xpath 1.0 并且我似乎无法最大程度地工作......这是我的 Xpath 查询:

//m:REPORT_DATA[m:DATA_ITEM = 'LMP_PRC' and //m:INTERVAL_NUM[not(//INTERVAL_NUM > m:INTERVAL_NUM)]]/m:VALUE/text()

我正在尝试使用 data_item=LMP_PRC 找到最高间隔数的值。唯一不起作用的部分是“and”之后的“max”。

谢谢

4

3 回答 3

1

这会返回预期值吗?对于第二个样本,它返回 27.47472。

//m:REPORT_DATA[m:DATA_ITEM='LMP_PRC' and not(m:INTERVAL_NUM < //m:INTERVAL_NUM)]/m:VALUE/text()
于 2012-10-25T08:13:36.890 回答
1

你的子表达式

//m:INTERVAL_NUM[not(//INTERVAL_NUM > m:INTERVAL_NUM)]

在谓词内,这意味着您只使用它的布尔值;如果此子表达式至少选择一个节点,则为真,它总是这样做,因此条件是多余的。

如果没有看到您的更多要求,我无法帮助您更正查询。但是,我要指出,如果您的源文档是“巨大的”,那么这将需要“永远”,其中“永远”是与“巨大”平方成正比的时间。

于 2012-10-25T08:06:08.843 回答
0

如果您使用的是 Java,那么您不会被 XPath 1.0 所困。多年来,XPath 2.0 对 Java 的支持一直可用(主要但不完全来自 Saxon)。与其用一只手绑在背后来解决这个问题,不如下载合适的工具来完成这项工作。

于 2012-10-25T15:29:14.650 回答