我有一个像这样的xml:
<root>
<row col1="value1" col2="value2" ...... coln="valuen"/>
<row col1="value1" col2="value2" ...... coln="valuen"/>
.
.
.
<row col1="value1" col2="value2" ...... coln="valuen"/>
</root>
如何将此属性名称转换为列名称和属性值作为列值?
答案 0 :(得分:2)
这将起作用,假设每行具有相同数量的属性:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="/root">
<table>
<tbody>
<tr>
<xsl:apply-templates select="row[1]" mode="header"/>
</tr>
<xsl:apply-templates select="row" mode="rows"/>
</tbody>
</table>
</xsl:template>
<xsl:template match="row" mode="header">
<xsl:for-each select="attribute::*">
<th><xsl:value-of select="local-name(.)" /></th>
</xsl:for-each>
</xsl:template>
<xsl:template match="row" mode="rows">
<tr>
<xsl:for-each select="attribute::*">
<td><xsl:value-of select="." /></td>
</xsl:for-each>
</tr>
</xsl:template>
</xsl:stylesheet>
如果可能有其他属性不代表列值,则需要通过检查名称或其他内容来过滤掉这些属性。