非常重要的注意事项:我正在使用 QtXmlPattern(一个未完全实现的 XSLT 2.0 处理器,在实现的内容中有一些错误......)
我有一个格式良好的 XML 文件,其中的数据定义在一个四级数组中,如下所示:
<a>
<b>
<c day="20150221">
<d>...</d>
<e>...</e>
</c>
<c day="20150222">
<d>...</d>
<e>...</e>
</c>
<c day="20150223">
<d>...</d>
<e>...</e>
</c>
</b>
<b>
<c day="20150219">
<d>...</d>
<e>...</e>
</c>
<c day="20150221">
<d>...</d>
<e>...</e>
</c>
<c day="20150223">
<d>...</d>
<e>...</e>
</c>
</b>
...
</a>
结果应该包括所有天数,但正如我们所见,每个<b>
列表可能有不同的天数。然而,结果需要有所有<b>
标签的所有天数。如果数据不可用,则结果可能保持为空或为零。
我找到了一种在变量中收集所有日子的方法:
<xsl:variable name="days" select="distinct-values(/a/b/c/@day)"/>
但我看不到如何生成看起来像这样的最终结果:
<table>
<th>
<td>20150219</td>
<td>20150221</td>
<td>20150222</td>
<td>20150223</td>
</th>
<tr>
<td>data from <d> tag on 20150219</td>
<td>data from <d> tag on 20150221</td>
<td>data from <d> tag on 20150222</td>
<td>data from <d> tag on 20150223</td>
</tr>
...[repeat for various data and calculation on the data]...
</table>
我的问题是变量不是节点列表,只是字符串列表,我不太确定如何循环遍历字符串列表。
以防万一,对于那些不了解 QXmlQuery 解析器的人,该xsl:for-each-group
命令不存在。