我正在尝试使用XSL转换某些XML,以使输出看起来更好,对其他用户更具可读性。我有一些XML:
<G>
<OE>
<example1>Sample 1</example1>
<example2>Sample 2</example2>
<var name="name1">
<integer>1</integer>
</var>
</OE>
</G>
我想从中获取所有详细信息并将其显示在表中,因此我使用以下XSL代码:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:template match="/">
<html>
<body>
<h2>Heading</h2>
<table border="1">
<tr bgcolor="#3399FF">
<th>Example 1</th>
<th>Example 2</th>
<th>Var name</th>
<th>Int</th>
</tr>
<xsl:for-each select="G/OE">
<xsl:for-each select="var">
<tr>
<td>
<xsl:value-of select="Example 1" />
</td>
<td>
<xsl:value-of select="Example 2" />
</td>
<td>
<xsl:value-of select="@name" />
</td>
<td>
<xsl:value-of select="integer" />
</td>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我知道以下XSL无法正常运行。我希望输出为:
样本1,样本2,名称1,1 - 以表格格式。
我的问题是我不知道该怎么做。在上面的XSL代码中,它只检索var和integer。如果我只使用顶部<xsl:for-each>
,则只检索前两个。
我尝试在第一个被选中之后移动第二个<xsl:for-each>
,所以在:
<td><xsl:value-of select="Example 2"/></td>
和
<td><xsl:value-of select="@name"/></td>
我收到错误。有没有办法解决这个问题?
感谢您的帮助。
答案 0 :(得分:0)
你在var上循环(在内部for-each中),因此这两个示例标记都在你的范围之外。您可能希望删除内部for-each循环(并引用var / @ name和var / integer而不是@name和整数)。