请使用基本XSLT模板来帮助为每个项目创建列。 输入XML:
<list>
<item>
<name>John</name>
<image>John Picture</image>
</item>
<item>
<name>Bob</name>
<image>Bob Picture</image>
</item>
</list>
输出HTML:
<table>
<tr>
<td>John</td>
<td>Bob</td>
</tr>
<tr>
<td>John Picutre</td>
<td>Bob Picture</td>
</tr>
</table>
非常感谢您
答案 0 :(得分:0)
您需要发布您编写的XSLT以获得结果,以下是您可以使用的代码:
最终更新脚本:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="list">
<table>
<tr>
<xsl:for-each select="item/name">
<td>
<xsl:value-of select="."/>
</td>
</xsl:for-each>
</tr>
<tr>
<xsl:for-each select="item/image">
<td>
<xsl:value-of select="."/>
</td>
</xsl:for-each>
</tr>
</table>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
如果您希望每个item
元素都有一列,那么您应该首先选择仅前item
个元素下的元素,因为它们将代表每一行的开始
<xsl:for-each select="item[1]/*">
然后,要构建该行,请在所有item
元素下获取与当前所选名称相同的相关元素
<xsl:apply-templates select="../../item/*[name() = name(current())]" />
尽管您定义这样的键可能会更容易...
<xsl:key name="items" match="item/*" use="name()" />
然后您将获得具有相同名称的元素,如下所示:
<xsl:apply-templates select="key('items', name())" />
尝试使用此XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes"/>
<xsl:key name="items" match="item/*" use="name()" />
<xsl:template match="list">
<table>
<xsl:for-each select="item[1]/*">
<tr>
<xsl:apply-templates select="key('items', name())" />
</tr>
</xsl:for-each>
</table>
</xsl:template>
<xsl:template match="item/*">
<td>
<xsl:value-of select="." />
</td>
</xsl:template>
</xsl:stylesheet>
这假定所有元素都位于每个item
下(嗯,至少在第一个item
下)。