2011-11-03 115 views
0

表列我有一个这样的XML:如何转换XML属性使用XSLT

<root> <row col1="value1" col2="value2" ...... coln="valuen"/> <row col1="value1" col2="value2" ...... coln="valuen"/> . . . <row col1="value1" col2="value2" ...... coln="valuen"/> </root>

如何转换成表格此属性名称作为列名和属性值的列值?

回答

1

这将工作,假设每一行都有相同数量的属性:

<?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> 

如果有可能不代表列值额外的属性,你需要通过检查,以过滤掉那些名字什么的。

+0

谢谢@G_H ....这个工程完全像我想要的! – smh0427