使用xslt将xml列表转换为具有多列的html表

时间:2009-10-21 10:06:02

标签: html xml xslt

假设我有一个包含列表的xml文档,如下所示:

<Items>
  <Item>First Item</Item>
  <Item>Second Item</Item>
  <Item>Third Item</Item>
  <Item>4</Item>
  <Item>Five</Item>
</Items>

我想将它转换为一个html表格,其中包含两个Item元素列(我现在不会讨论它是ordererd顶部 - 左下 - 右 - 还是左 - 右 - 上 - 下)。

<table>
  <tr>
    <td>First Item</td>
    <td>Second Item</td>
  </tr>
  <tr>
    <td>Third Item</td>
    <td>4</td>
  </tr>
  <tr>
    <td>Five</td>
    <td></td>
  </tr>
</table>

我知道我可以通过以下xslt转换得到一个包含单个列的表,但无法弄清楚如何获取多个列。

<table>
  <xsl:for-each select="Items">
    <tr>
      <td><xsl:value-of select="Item"/></td>
    </tr>
  </xsl:for-each>
</table>

1 个答案:

答案 0 :(得分:1)

试试这个:

<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/Items">
    <table>
      <xsl:for-each select="Item[position() mod 2 = 1]">
        <xsl:variable name="pos" select="position() - 1" />
        <tr>
          <td><xsl:value-of select="."/></td>
          <td><xsl:value-of select="//Item[position() = ($pos * 2) + 2]"/></td>
        </tr>
      </xsl:for-each>
    </table>
  </xsl:template>
</xsl:stylesheet>
相关问题