使用xsl在表中显示XML

时间:2013-11-27 14:17:55

标签: xml xslt xmltable

假设我有这个XML文件

<section name="AAA">
    <Item1>FALSE</Item1>
    <Item2>FALSE</Item2>
    <Item3>FALSE</Item3>
</section>
<section name="BBB">
    <Item1>FALSE</Item1>
    <Item2>FALSE</Item2>
    <Item3>FALSE</Item3>
</section>

现在我想创建一个xsl文件,它将在表格中显示数据

           AAA          BBB
Item1      FALSE        FALSE
Item2      FALSE        FALSE
Item3      FALSE        FALSE

我尝试了几种语法,但没有人给我我想要的东西 我可以在这里或示例获得帮助吗?

2 个答案:

答案 0 :(得分:1)

以下解决方案适用于任意数量的部分和任意数量的项目,每个部分都拥有相同数量的项目:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <table>
            <thead>
                <tr>
                    <th></th>
                    <xsl:for-each select="//section">
                        <th>
                            <xsl:value-of select="@name" />
                        </th>
                    </xsl:for-each>
                </tr>
            </thead>
            <tbody>
                <xsl:for-each select="//section[1]/*">
                    <tr>
                        <td>
                            <xsl:value-of select="name()" />
                        </td>
                        <xsl:variable name="row" select="position()" />
                        <xsl:for-each select="//section/*[$row]">
                            <td>
                                <xsl:value-of select="." />
                            </td>
                        </xsl:for-each>
                    </tr>
                </xsl:for-each>
            </tbody>
        </table>
    </xsl:template>
</xsl:stylesheet>

答案 1 :(得分:0)

<table>
  <thead>
    <tr>
      <th></th>
      <th>AAA</th>
      <th>BBB</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Item1</td>
      <xsl:for-each select="Item1">
        <td><xsl:value-of select="."/></td>
      </xsl:for-each>
    </tr>
    <tr>
      <td>Item2</td>
      <xsl:for-each select="Item2">
        <td><xsl:value-of select="."/></td>
      </xsl:for-each>
    </tr>
    <tr>
      <td>Item3</td>
      <xsl:for-each select="Item3">
        <td><xsl:value-of select="."/></td>
      </xsl:for-each>
    </tr>
  </tbody>
</table>

如果你需要更多的可变性,你将不得不做一些编程,但这应该从你开始。