How to get equivalent of max() on MSXML6?

2019-04-15 22:28发布

Evidently MSXML6 doesn't support XSLT 2.0, at least not the max() function. I need to find out the node that contains the highest value among its siblings. They are in arbitrary order.

I want the order to remain identical so adding order-by and checking [0] is out of question.

I want to do this with a single XPath statement. I don't want to call templates or involve any more complex logic than that. I'm sure there is a horrifying MS Scripting Extensions embedded somewhere. Eww.

I thought of:

elem1[count(../elem1[@value < current()/@value]) = 0]

But it didn't work as I expected (returns the first node always). Any other nifty XPath magic can you think of there?

1条回答
地球回转人心会变
2楼-- · 2019-04-15 23:01

Try

elem1[not(../elem1/@value > @value)]

That is, you want the elem1 for which it is not the case that another elem1 has a greater @value.

Inspiration from this handy page

查看更多
登录 后发表回答