我有一个包含某些数据的XML文件,我必须将其转换为HTML表格。有3-4个表只有2列,4-5个表有更多列。我想传递XML属性值,比如tableWidth=200
或tableWidth=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文件......
答案 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">