我在转换 XML 结构时遇到问题:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="ceva.xsl"?>
<!-- Edited by XMLSpy® -->
<reports>
<report_head>
<value>product_id</value>
<value>product_name</value>
</report_head>
<report_data>
<value>1</value>
<value>PRODUCT NAME NO 43</value>
</report_data>
<report_data>
<value>2</value>
<value>PRODUCT NAME NO 56</value>
</report_data>
<report_data>
<value>3</value>
<value>PRODUCT NAME NO 65</value>
</report_data>
</reports>
像一张桌子
<table>
<tr>
<td>product_id</td>
<td>product_name</td>
</tr>
<tr>
<td>1</td>
<td>PRODUCT NAME NO 43</td>
</tr>
<tr>
<td>2</td>
<td>PRODUCT NAME NO 56</td>
</tr>
<tr>
<td>3</td>
<td>PRODUCT NAME NO 65</td>
</tr>
</table>
这是我正在使用的 XSL:
<?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="/">
<html>
<body>
<h2>Transform a table</h2>
<!--
<table border="1">
<tr>
<xsl:for-each select="reports/report_head/value">
<td><xsl:value-of select="."/></td>
</xsl:for-each>
</tr>
<xsl:for-each select="reports/report_data/value">
<tr>
<td><xsl:value-of select="."/></td>
</tr>
</xsl:for-each>
</table>
-->
<table border="1">
<tr>
<xsl:apply-templates/>
</tr>
</table>
</body>
</html>
</xsl:template>
<!--
<xsl:template match="value">
<tr>
<td><xsl:value-of select="."/></td>
</tr>
</xsl:template>
</table>
-->
<xsl:template match="value">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
</xsl:stylesheet>
但是等等,还有更多,我不知道有多少列。一个典型的报告可能有 10 列,但它可能有 20、30+,因此 xslt 必须动态执行此操作。
我试过for-each
了,有人建议使用 a template
,但我没有得到任何结果。我现在该怎么办?
谢谢。