如何将XML显示为HTML表格

时间:2011-08-16 02:38:41

标签: xml xslt

我有一个XML文件,其中包含某些程序的配置信息。 该文件类似于:

<master>
  <childCat1>
     <param1>test1</param1>
     <param2>test2</param2>
   </childCat1>
  <childCat2>
     <item1>test3</item1>
     <item2>test4</item2>
  </childCat2>
</master>*

我想创建一个XSL样式表,将XML显示为html表。 有人可以建议我如何使用XSL将XML转换为表格,如下所示? 我需要能够添加其他类别和参数,而无需每次都重新访问样式表 - 如果样式表理解xml将始终具有类别,参数和值但不对每个类别,参数和值进行任何假设,那么这将是很好的。 / p>

在表格中我想要3列。我希望列显示为:

Category    Parameter   Value
--------------------------------
childCat1   param1      test1
childCat1   param2      test2
-------------------------------- 
childcat2   item1       item1
childcat2   item2       item2

等 让类别之间的分隔线出现会很好,但我可以没有它们。

提前感谢您的任何帮助。如果所有其他方法都失败了,我会写一些PHP代码来做到这一点,但XSL样式表会更加通用。

澄清:

我的偏好是XSL事先只知道一件事 - XML有两个级别的元素,类别及其直接子元素。因此,无论我可以添加(或删除) - 其他类别或子项或其他什么,xsl都可以无需手动更新。

1 个答案:

答案 0 :(得分:0)

我认为这就是你要找的东西

<?xml version="1.0" encoding="ISO-8859-1"?>
 <xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/master">
 <html><body>
 <table border="1">
  <tr bgcolor="yellow">
        <th style="text-align:left">Category</th>
        <th style="text-align:left">Parameter</th>
        <th style="text-align:left">Value</th>
      </tr>
   <xsl:apply-templates select="./*" mode='category' />

 </table>
</body></html>
 </xsl:template>

<xsl:template match='*' mode='category'>
<tr><td colspan='3'></td></tr>
<xsl:apply-templates select="./*" mode='parameter' />
</xsl:template>

<xsl:template match='*' mode='parameter'>
<tr>
<td><xsl:value-of select="name(..)"/></td>
<td><xsl:value-of select="name()"/></td>
<td><xsl:value-of select="."/></td>
</tr>

</xsl:template>
</xsl:stylesheet>