所以我被困在使用 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”。
谢谢
这会返回预期值吗?对于第二个样本,它返回 27.47472。
//m:REPORT_DATA[m:DATA_ITEM='LMP_PRC' and not(m:INTERVAL_NUM < //m:INTERVAL_NUM)]/m:VALUE/text()
你的子表达式
//m:INTERVAL_NUM[not(//INTERVAL_NUM > m:INTERVAL_NUM)]
在谓词内,这意味着您只使用它的布尔值;如果此子表达式至少选择一个节点,则为真,它总是这样做,因此条件是多余的。
如果没有看到您的更多要求,我无法帮助您更正查询。但是,我要指出,如果您的源文档是“巨大的”,那么这将需要“永远”,其中“永远”是与“巨大”平方成正比的时间。
如果您使用的是 Java,那么您不会被 XPath 1.0 所困。多年来,XPath 2.0 对 Java 的支持一直可用(主要但不完全来自 Saxon)。与其用一只手绑在背后来解决这个问题,不如下载合适的工具来完成这项工作。