使用 FLWOR 的 exide 机器人
robots for exide using FLWOR
-R (CARGAS PEQUEÑAS-MEDIANAS)
--RS080N
--RS003N
--RS010L
-CX (GRANDES CARGAS)
--CX110L
--CX210L
我需要这个结果(ul 中的 ul)使用这个 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>
我试过了
<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>
但是没用。有什么想法吗?
<li>
<ul>
{for $h in $i/../robot
where $h/codigo/@serie=$i/codigo
return <li> <h3>{$h/codigo/text()}</h3> </li>}
</ul>
</li>
这样试一下,看看行不行:
let $doc := """your xml above"""
for $i in $doc
let $codigo := $i//serie/codigo/text()
for $co in $codigo
return
<ul>
<li> <h3>Serie: {$co} ({$co/../following-sibling::descripcion/text()})</h3> </li>
<li>
<ul>
{for $h in $i/robot/codigo[@serie=$co]
return <li> <h3>{$h}</h3> </li>}
</ul>
</li>
</ul>
退一步从概念上思考这个任务会很有帮助。
从抽象的角度来看,你需要做的是
从系列中拆分机器人
按意甲对机器人进行分组
对于每个组,查找对应的系列(=加入)
完成此操作后,获得最终输出将归结为两个简单的嵌套 FLWOR 表达式。
希望对您有所帮助!
-R (CARGAS PEQUEÑAS-MEDIANAS)
--RS080N
--RS003N
--RS010L
-CX (GRANDES CARGAS)
--CX110L
--CX210L
我需要这个结果(ul 中的 ul)使用这个 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>
我试过了
<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>
但是没用。有什么想法吗?
<li>
<ul>
{for $h in $i/../robot
where $h/codigo/@serie=$i/codigo
return <li> <h3>{$h/codigo/text()}</h3> </li>}
</ul>
</li>
这样试一下,看看行不行:
let $doc := """your xml above"""
for $i in $doc
let $codigo := $i//serie/codigo/text()
for $co in $codigo
return
<ul>
<li> <h3>Serie: {$co} ({$co/../following-sibling::descripcion/text()})</h3> </li>
<li>
<ul>
{for $h in $i/robot/codigo[@serie=$co]
return <li> <h3>{$h}</h3> </li>}
</ul>
</li>
</ul>
退一步从概念上思考这个任务会很有帮助。
从抽象的角度来看,你需要做的是
从系列中拆分机器人
按意甲对机器人进行分组
对于每个组,查找对应的系列(=加入)
完成此操作后,获得最终输出将归结为两个简单的嵌套 FLWOR 表达式。
希望对您有所帮助!