我正在尝试从以下XML生成html。
<students>
<class action="update">2</class>
<section action="update">B</class>
<student>
<name>ravi</name>
<skill action="update">badminton</skill>
</student>
<student action="insert">
<name>gauri</name>
<skill>tennis</skill>
</student>
</students>
我正在编写一个xsl文件来生成下表。
tag subtag action
class update
section update
ravi skill update
gauri insert
我的xsl文件看起来像这样。
<xsl:template match="/*">
<h2>My CD Collection</h2>
<table>
<tr>
<th>tag</th>
<th>subtag</th>
<th>action</th>
</tr>
<xsl:for-each select="//*">
<xsl:choose>
<xsl:when test="@Action">
<tr>
<td><xsl:value-of select="local-name()"/></td>
<td></td>
<td><xsl:value-of select="@Action"/></td>
</tr>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</table>
</xsl:template>
但是这会生成下表。
tag subtag action
class update
section update
skill update
student insert
如何单独处理学生标签。请帮忙。我是XSLT的新手。
答案 0 :(得分:0)
尝试使用此模板作为启动器
<xsl:template match="/*">
<table>
<tr>
<th>tag</th>
<th>subtag</th>
<th>action</th>
</tr>
<xsl:for-each select="*">
<tr>
<td>
<xsl:choose>
<xsl:when test="name"><xsl:value-of select="name"/></xsl:when>
<xsl:otherwise><xsl:value-of select="local-name()"/></xsl:otherwise>
</xsl:choose>
</td>
<xsl:choose>
<xsl:when test="@action">
<td></td>
<td><xsl:value-of select="@action"/></td>
</xsl:when>
<xsl:otherwise>
<td><xsl:value-of select="local-name(*[@action])"/></td>
<td><xsl:value-of select="*/@action"/></td>
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:for-each>
</table>
</xsl:template>