使用XSLT将XML属性值传递给HTML属性值

时间:2011-12-02 07:16:13

标签: html xml xslt

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

示例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>   

我想在XML文件中添加一个属性tablewidth,并在<table>标记中使用它是XSLT文件......

1 个答案:

答案 0 :(得分: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">