我有一个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都可以无需手动更新。
答案 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>