Google表格ImportXML XPath - sum vs avg

时间:2015-03-25 18:54:44

标签: xml xpath xml-parsing google-sheets

GoogleSheets / ImportXML / XPath编码的大师,

快速提问......两个ImportXML语句唯一不同的是XPath Aggregate函数:总和有效,avg不用。

=ImportXML("http://api.eve-marketdata.com/api/item_orders2.xml?char_name=Demo&buysell=b&type_ids=17464&station_ids=60003760","sum(/emd/result/rowset/row[not(preceding-sibling::row/@price > @price or following-sibling::row/@price > @price)]/@volremaining)")

=ImportXML("http://api.eve-marketdata.com/api/item_orders2.xml?char_name=Demo&buysell=b&type_ids=17464&station_ids=60003760","avg(/emd/result/rowset/row[not(preceding-sibling::row/@price > @price or following-sibling::row/@price > @price)]/@volremaining)")

注意:对于公式中的页面,目标是找到具有最高@price的行...然后获取数量/ volremaining和价格。但是,当有最高价格的多行时,我需要求和(@volremaining)和avg(@price),因为我只想要返回一行。我可以使用[1]偏移来获得这个值......

=ImportXML("http://api.eve-marketdata.com/api/item_orders2.xml?char_name=Demo&buysell=b&type_ids=17464&station_ids=60003760","/emd/result/rowset/row[not(preceding-sibling::row/@price > @price or following-sibling::row/@price > @price)][1]/@volremaining")

...但让min()/ max()/ avg()工作的练习失败了。

除了W3C XPath Site显示带有双括号的fn:avg((arg1,arg2,arg3))之外,我的生活能否找出差异,而fn:sum是单括号(ARG1,ARG2,ARG3)。

非常感谢您的协助。

此致

G A

1 个答案:

答案 0 :(得分:1)

Google Sheet的IMPORTXML()功能异常错误,但在这种情况下原因不同。

IMPORTXML()仅支持XPath 1.0函数,但不支持XPath 2.0函数。 sum()是XPath 1.0函数,而avg()min()max()是您无法在Google表格中使用的XPath 2.0函数。

请参阅relevant part of the XPath 1.0 specification - 如您所见,avg()未列为数字功能。它仅作为XPath 2.0 and XQuery aggregate functions的成员列出。顺便说一句,w3schools与W3C没有任何关系 - 你永远不应该相信来自w3schools的内容。

总结一下,avg()在XPath表达式中不可用 - 只需检索所有值并使用Google Sheets function instead to calculate an average