Considering the following XML:
<?xml version="1.0" encoding="UTF-8"?>
<publication>
<scientificPublication>
<id>2347823476</id>
<book>
<chapter>
<Title>ChapterTitle</Title>
<sequenceNumber>0</sequenceNumber>
<correctionNumber>0</correctionNumber>
</chapter>
<chapter>
<Title>ChapterTitle</Title>
<sequenceNumber>0</sequenceNumber>
<correctionNumber>1</correctionNumber>
</chapter>
<chapter>
<Title>ChapterTitle</Title>
<sequenceNumber>0</sequenceNumber>
<correctionNumber>2</correctionNumber>
</chapter>
<chapter>
<Title>ChapterTitle</Title>
<sequenceNumber>1</sequenceNumber>
<correctionNumber>0</correctionNumber>
</chapter>
<chapter>
<Title>ChapterTitle</Title>
<sequenceNumber>1</sequenceNumber>
<correctionNumber>1</correctionNumber>
</chapter>
<chapter>
<Title>ChapterTitle</Title>
<sequenceNumber>2</sequenceNumber>
<correctionNumber>0</correctionNumber>
</chapter>
</book>
</scientificPublication>
</publication>
What I need is to retrieve all the chapters with the same sequenceNumber, where correctionNumber is less than the max of correctionNumber.
So in the case of the example it would be the chapters with (sequenceNumber,correctionNumber): [(0,0),(0,1),(1,0)]
My idea was to create a function to return the MAX, considering this post, and use this as a base to create a clause to get all the chapters with correctionNumber less than the MAX. But I'm not sure how would I be able to iterate over the chapters, getting all the sequenceNumber, to create this clause.
It would be something like:
//chapter[(./*[((sequenceNumber='X')and(correctionNumber<'MAX'))or((sequenceNumber='Y')and(correctionNumber<'MAX'))or...])]