【发布时间】:2016-04-06 09:33:08
【问题描述】:
好的,我正在尝试构建一个表,但我没有正确执行此操作,我没有 XSL 示例,因为我尝试的任何内容都没有接近我需要的。 (我尝试过使用 xsl:apply-templates 循环,甚至使用模式,甚至 xsl:for-each 和 key(),但无法获得正确的过滤器。
这是我将使用的 XML 示例。 (我使用的真正的 xml 比下面这个更复杂)
<report>
<item>
<vertical>
<component>
<partname>Left Side</partname>
<parttype>Side</parttype>
<partlocation>Outside</partlocation>
<material>Wood</material>
<thickness>20mm</thickness>
<colour>White</colour>
</component>
</vertical>
<vertical>
<component>
<partname>Right Side</partname>
<parttype>Side</parttype>
<partlocation>Outside</partlocation>
<material>Wood</material>
<thickness>20mm</thickness>
<colour>White</colour>
</component>
</vertical>
<vertical>
<component>
<partname>Back</partname>
<parttype>Back</parttype>
<partlocation>Inside</partlocation>
<material>Plastic</material>
<thickness>3mm</thickness>
<colour>Black</colour>
</component>
</vertical>
</item>
</report>
所以我想做的任务是,对于每个<item>,我需要开始制作一个表格,在该表格内我需要评估每个<component>,以找出有多少具有相同的<material>, <thickness> 和 <colour>。
然后我需要列出材料名称和详细信息。
接下来,我需要所有具有相同<material>、<thickness> 和<colour> 的<parttypes> 和<partlocation> 的<components>,以在每行中显示它们的<partname>。
没有固定数量的材料我可以期待,一次我可能会得到 1,另一次我可能会得到 3。而且我不会总是知道节点将包含什么值。
同样在每个 <item> 中,我可以有 1-3 个不同的 <parttype> 和 <partlocation>(尽管它们成对工作 - 我知道这些节点的值是什么)
这是一个格式化完成的示例,上面的代码非常简单......
Wood, 20mm, White
Left Side
Right Side
Plastic, 3mm, Black
Back
这个问题非常相似,但不完全...... xsl grouping of repetitive nodes by xml element in xslt1
【问题讨论】: