我有一个xml文件,想要转换为xsl文件 xml文件的结构
<?xml version="1.0"?>
<Product>
<Category>
<a1>A</a1>
<b1>B</b1>
<c1>C</c1>
<d1>
<dd1>DD1</dd1>
<dd1>DD2</dd1>
</d1>
<e1>E</e1>
</Category>
<Category>
<a1>AA</a1>
<b1>BB</b1>
<c1>CC</c1>
<d1>
<dd1>DD3</dd1>
</d1>
<e1>EE</e1>
</Category>
</Product>
这里的第一个类别/ d1有多个记录 我希望在这个所需的输出
中生成xsl文件<table>
<th>a1</th>
<th>b1</th>
<th>c1</th>
<th>dd1</th>
<th>e1</th>
<tr>
<td>A</td>
<td>B</td>
<td>C</td>
<td>DD1</td>
<td>E</td>
</tr>
<tr>
<td>A</td>
<td>B</td>
<td>C</td>
<td>DD2</td>
<td>E</td>
</tr>
<tr>
<td>AA</td>
<td>BB</td>
<td>CC</td>
<td>DD3</td>
<td>EE</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>Product Information</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>A1</th>
<th>B1</th>
<th>C1</th>
<th>D1</th>
<th>E1</th>
</tr>
<xsl:for-each select="Product/Category">
<tr>
<td><xsl:value-of select="a1"/></td>
<td><xsl:value-of select="b1"/></td>
<td><xsl:value-of select="c1"/></td>
<td><xsl:value-of select="d1"/></td>
<td><xsl:value-of select="e1"/></td>
</tr>
</xsl:for-each>
</table>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
但我在“d1”
连接了多个值有人可以帮助获得输出 提前致谢
答案 0 :(得分:0)
您实际上需要为每个 dd1 元素添加一个新行,因此您需要在当前循环中嵌套 xsl:for-each 循环,以获得 dd1 元素
<xsl:for-each select="d1/dd1">
您需要对如何获得 a1 , b1 , c1 和 e1 进行调整但是,因为您将不再位于类别元素上。你必须这样做,例如:
<xsl:value-of select="../../a1"/>
或者,您可以定义一个变量以指向类别元素,并使用它。试试这个XSLT作为例子
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Product Information</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>A1</th>
<th>B1</th>
<th>C1</th>
<th>D1</th>
<th>E1</th>
</tr>
<xsl:for-each select="Product/Category">
<xsl:variable name="Category" select="." />
<xsl:for-each select="d1/dd1">
<tr>
<td>
<xsl:value-of select="$Category/a1"/>
</td>
<td>
<xsl:value-of select="$Category/b1"/>
</td>
<td>
<xsl:value-of select="$Category/c1"/>
</td>
<td>
<xsl:value-of select="."/>
</td>
<td>
<xsl:value-of select="$Category/e1"/>
</td>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>