1

I have a source XML as follows.

<Level>
    <E1>
      <Date>20230315</Date>
    </E1>
    <E1>
      <Date>20230318</Date>
    </E1>
    <E2>
      <Item>001</Item>
    </E2>
</Level>
<Level>
    <E1>
       <Date>20230316</Date>
    </E1>
    <E2>
      <Item>001</Item>
    <E2>
</Level>
<Level>
    <E1>
       <Date>20240301</Date>
    </E1>
    <E1>
      <Date>20240302</Date>
    </E1>
    <E2>
      <Item>002</Item>
    <E2>
</Level>

I used 2 keys :

xsl:key name="item-num-key" match="Level" use="E1/Item"

xsl:key name="item-numdate-key match" match="Level" use="concat(E1/Item,E1/Date)"

xsl:for-each select="key('item-num-key',E1/Item)[generate-id() = generate-id(key('item-numdate-key',concat(E1/Item,E1/Date))[1])]

xsl:sort select="Date" order="descending"

But I didn't get the result what I am expecting.

Expecting result

   <Level>
      <E1>
        <Date>20230318</Date>
        <Item>001</Item>
    </Level>
   <Level>
      <E1>
        <Date>20240302</Date>
        <Item>002</Item>
   </Level>

Thank you in advance for your help. Much appreciated.

Handy
  • 33
  • 3

0 Answers0