2011-12-02 50 views
1

我有一个包含特定数据的XML文件,我必须将其转换为HTML表格。有3-4个只有2列的表格和4-5个有更多列的表格。我想要传递XML属性值,如tableWidth=200tableWidth=500,具体取决于列数。使用XSLT将XML属性值传递给HTML Atrribute值

示例XML文件 -

<tab> 
    <!-- b="Y" will be used if Heading is required --> 
    <r b="Y"> 
    <d>Name</d> 
    <d>Age</d> 
    </r> 
    <r> 
    <d>ABC</d> 
    <d>23</d> 
    </r> 
</tab> 

以下是XSLT文件 -

<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> 
<xsl:output method='html' media-type='text/html'/> 
<xsl:template match="Tab"> 
<table width="500" cellpadding="6" cellspacing="0" align="center"> 
    <xsl:for-each select="R"> 
<tr> 
    <xsl:choose> 
     <xsl:when test="@b = 'Y'"> 
      <xsl:for-each select="D"> 
       <td align='' style='border:1px solid black'> 
        <b><xsl:value-of select="."/></b> 
       </td> 
      </xsl:for-each> 
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:for-each select="D"> 
       <td align='' style='border:1px solid black'> 
        <xsl:value-of select="."/> 
       </td> 
      </xsl:for-each> 
     </xsl:otherwise> 
    </xsl:choose> 
</tr> 
    </xsl:for-each> 
</table> 
</xsl:template> 
</xsl:stylesheet> 

我想增加一个属性说tablewidth到XML文件,并在<table>标签使用它是XSLT文件。 ..

回答

3

假设你已经修改了你的XML包括tableWidth属性,像这样...

<tab tableWidth="500"> 
    .... 

有两种方法可以在XSLT中使用该属性。首先,更详细的方式......

<xsl:template match="Tab"> 
    <table cellpadding="6" cellspacing="0" align="center"> 
     <xsl:attribute name="width"><xsl:value-of select="@tableWidth" /></xsl:attribute> 

但它通常更清洁使用属性值模板。然后你只需要做到这一点:

<xsl:template match="Tab"> 
    <table width="{@tableWidth}" cellpadding="6" cellspacing="0" align="center"> 

这两个应该输出如下:

<table width="500" cellpadding="6" cellspacing="0" align="center"> 
+0

非常感谢......使用的第一个解决方案.. :) – John