考虑 xml 文件:
<warehouse>
- may be some tag on upper level of dep present, may be not
<dep no ="2">
<item>
<itemName> Item 1 </itemName>
<supplier> Supp1 </supplier>
<supplier> Supp2 </supplier>
</item>
</dep>
<dep no ="1">
<item>
<itemName> Item 2 </itemName>
<supplier> Supp1 </supplier>
<supplier> Supp3 </supplier>
</item>
</dep>
.......
</warehouse>
注意: dep 标签上方可能有一些标签,或者它们可能丢失。
我需要在列表中显示供应商列表,他们生产的项目名称以及每个项目前面的部门名称,例如
Supp2
Item1, 2
Supp1
Item1, 2
Item2, 1
这是我的代码:
<ul>
{
for $sup in distinct-values(doc("warehouse.xml")//supplier)
for $item in doc("warehouse.xml")//item[supplier = $sup]
return <li>{data($sup)} <ul> {
let $n:= $item/itemName
let $y:= doc("warehouse.xml")//dep[//itemName=$n]/@no
for $n1 in $n return <li>{data($n1), data($y)} </li>} </ul> </li>
}
</ul>
我面临两个问题。首先是 y 显示所有部门编号,从 1 开始。另一个是如果我有 1 个供应商生产两个项目,而不是
Supp1
Item1, 2
Item2, 3
我明白了
Supp1
Item1, 1,2, ...
Supp1
Item2, 1,2, ...
你能建议什么可能是错的吗?我深表感激。