【发布时间】:2021-12-14 16:22:00
【问题描述】:
背景和最终目标
考虑下面的 XML,它应该在图像中创建网格。每个 col 元素代表一个具有宽度和长度的单元格(无论是空的还是包含区域)。对于给定的块,起始行(纬度)是已知的,而结束行是未知的。
请注意,没有 <row latitude="6"/>,因为该行已作为 Desert States 和 Deep South 块的一部分用完。同样,第 3 行缺少 <col timezone="PDT"/>,因为该单元格已被 North West 占用。
我需要知道制作最终网格需要多少行。在这个例子中,我需要 10 行。
问题
我目前的方法是计算出长度总和最大的时区。
sum(//col[@timezone='EDT']/@length)
上述 xpath 的问题在于,时区在这里是硬编码的(在实际应用程序中实际上是一个具有非常大的可能值集的轴)。 我尝试过键和 muenchian 分组,但无济于事。
我可以使用哪些 xpath 1.0 或 xslt 1.0?
XML
<rows>
<row latitude="1">
<cols>
<col timezone="PDT" width="1" length="1">Canada</col>
<col timezone="CDT" width="1" length="1">Canada</col>
<col timezone="EDT" width="1" length="1">Canada</col>
</cols>
</row>
<row latitude="2">
<cols>
<col timezone="PDT" width="1" length="2">North West</col>
<col timezone="CDT" width="1" length="1"></col>
<col timezone="EDT" width="1" length="1"></col>
</cols>
</row>
<row latitude="3">
<cols>
<col timezone="CDT" width="1" length="1"></col>
<col timezone="EDT" width="1" length="2">NY/NJ</col>
</cols>
</row>
<row latitude="4">
<cols>
<col timezone="PDT" width="1" length="3">Desert States</col>
<col timezone="CDT" width="1" length="1"></col>
</cols>
</row>
<row latitude="5">
<cols>
<col timezone="CDT" width="2" length="6">Deep South / Bahamas</col>
<col timezone="EDT" width="2" length="6">Deep South / Bahamas</col>
</cols>
</row>
<row latitude="7">
<cols>
<col timezone="PDT" width="1" length="2">California</col>
</cols>
</row>
</rows>
【问题讨论】: