0

我有一个xml:

  <plot>
    <image>1.png</image>
  </plot>
  <plot>
    <image>2.png</image>
  </plot>
  <plot>
    <image>3.png</image>
  </plot>
  <plot>
    <image>4.png</image>
  </plot>
  <plot>
    <image>5.png</image>
  </plot>

我需要显示一个包含 3 列的表格,如果最后一列(第 6 列)不存在,我需要输入“---”,如下所示:

| col_a | col_b | col_c |
--------+-------+--------
| 1.png | 2.png | 3.png |
| 4.png | 5.png | --- |

如何使用 xsl 模板创建此表?

4

2 回答 2

1

循环遍历每三个绘图元素,并让每次迭代输出该行的所有单元格,如下所示:

<xsl:for-each select="plot[position() mod 3 = 1]">
  <tr>
    <td>
      <xsl:value-of select="."/>
    </td>
    <td>
      <xsl:choose>
        <xsl:when test="following-sibling::plot[1]">
          <xsl:value-of select="following-sibling::plot[1]"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:text>---</xsl:text>
        </xsl:otherwise>
      </xsl:choose>
    </td>
    <td>
      <xsl:choose>
        <xsl:when test="following-sibling::plot[2]">
          <xsl:value-of select="following-sibling::plot[2]"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:text>---</xsl:text>
        </xsl:otherwise>
      </xsl:choose>
    </td>
  </tr>
</xsl:for-each>

如果您想要一个可以扩展到任意数量的列的解决方案,请执行相同类型的循环,但不是显式执行每一列,而是调用一个输出单元格的模板,并使用剩余的单元格数递归调用自身以输出。

于 2013-07-29T21:39:42.737 回答
0

我可能会利用xsl:number 计数属性来查找数字,看看它是否能被 3 整除,找出你需要多少 ----s

然后使用foreach循环遍历元素并添加正确数量的-----。

于 2013-07-29T19:07:34.010 回答