【问题标题】:XSLT Index of groups created by for-each-group由 for-each-group 创建的组的 XSLT 索引
【发布时间】:2020-01-28 11:48:03
【问题描述】:

我需要使用带有 group-ending-with 属性的 for-each-group 将一个长表分成较小的表。在每个表中,我需要拥有该组的索引,但我无法找出可用的变量 - 如果有的话。

示例 xml:

<table>
  <row type='A'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='A'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='A'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='A'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
</table>

期望的输出:

<table>
  <title>Table 1</title>
  <row type='A'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
</table>
<table>
  <title>Table 2</title>
  <row type='A'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
</table>
<table>
  <title>Table 3</title>
  <row type='A'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
</table>
<table>
  <title>Table 4</title>
  <row type='A'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
  <row type='B'><cell>Some value</cell>
</table>

我已经完成了分组,但我找不到将索引放入表标题的方法。也许它是微不足道的,但搜索词组和索引没有给出任何有用的结果。

【问题讨论】:

    标签: xslt indexing grouping


    【解决方案1】:

    使用position() 函数。

    没有代码,因为没有提供代码 - 示例输入和预期输出都不是格式正确的 XML。

    (Michael Kay 补充):§14.1 https://www.w3.org/TR/xslt-30/#element-for-each-group 的最后一段如下:-

    "xsl:for-each-group 元素中包含的序列构造函数 按处理顺序对每个组进行一次评估。这 结果的序列按照处理顺序连接起来,形成 xsl:for-each-group 元素的结果。序列内 构造函数,上下文项是相关的初始项 组,上下文位置是该组在 组的处理顺序,上下文大小是 团体。这具有在序列构造函数中的效果, 调用 position() 获取连续值 1, 2, ... last()。”

    【讨论】:

    • 就这么简单。我在想 position() 会指向原始组中的元素,但现在当然有意义。谢谢。对粗略的 XML 感到抱歉 - 实际的 XML 过于复杂,无法在此处发布。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多