2011-12-02 77 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