Search code examples
xmlxhtmlxqueryflworexide

robots for exide using FLWOR


-R (CARGAS PEQUEÑAS-MEDIANAS)

--RS080N

--RS003N

--RS010L

-CX (GRANDES CARGAS)

--CX110L

--CX210L

I need this result (an ul inside an ul) using this xml

<robots>
    <serie>
        <codigo>R</codigo>
        <descripcion>CARGAS PEQUEÑAS-MEDIANAS</descripcion>
    </serie>
    <serie>
        <codigo>CX</codigo>
        <descripcion>GRANDES CARGAS</descripcion>
    </serie>
    <robot>
        <codigo serie="R">RS003N</codigo>
    </robot>
    <robot>
        <codigo serie="R">RS010L</codigo>
    </robot>
    <robot>
        <codigo serie="R">RS080N</codigo>
    </robot>
    <robot>
        <codigo serie="CX">CX110L</codigo>
    </robot>
    <robot>
        <codigo serie="CX">CX210L</codigo>
    </robot>
</robots>

I tried this

       <section>
            {for $i in doc("/db/exam/robots.xml")/robots/serie
                return 
            <ul>
                <li> <h3>Serie: {$i/codigo/text()} ({$i/descripcion/text()})</h3> </li>
                <li>
                    <ul>
                        {for $h in $i/../robot
                        return <li> <h3>{$h/codigo/text()}</h3> </li>}
                    </ul>
                </li>
            </ul>
            }
       </section>

But it doesn't work. Any ideas?


Solution

  • <li>
      <ul>
        {for $h in $i/../robot
        where $h/codigo/@serie=$i/codigo
        return <li> <h3>{$h/codigo/text()}</h3> </li>}
     </ul>
    </li>