好吧,这是一个艰难的时刻......我在制作具有不同宽度的表格单元时遇到了困难。我正在使用XML / XSLT来吐出我的HTML,所以宽度基本上以XML格式存储:
<size>
<width1>5</width1>
<width2>4</width2>
<width3>7</width3>
</size>
使用XSLT的属性集我应该有一个表行和分别为5px,4px,7px宽度的单元格。但是,问题在于attribute-set
需要成为<xsl:stylesheet>
的孩子才能发挥作用。我不能这样做:(原谅丢失的px)
<tr>
<td>
<xsl:attribute-set name="style">
<xsl:attribute name="width"><xsl:value-of select="size/width1"/></xsl:attribute>
</xsl:attribute-set>
</td>
<td>
<xsl:attribute-set name="style">
<xsl:attribute name="width"><xsl:value-of select="size/width2"/></xsl:attribute>
</xsl:attribute-set>
</td>
<td>
<xsl:attribute-set name="style">
<xsl:attribute name="width"><xsl:value-of select="size/width3"/></xsl:attribute>
</xsl:attribute-set>
</td>
</tr>
有没有办法使用XML数据生成html标签来设置样式?
答案 0 :(得分:3)
您需要在<td>
元素中添加 xsl:attribute ,而不是 xsl:attribute-set :
<xsl:template match="size">
<tr>
<td>
<xsl:attribute name="width">
<xsl:value-of select="./width1"/>
</xsl:attribute>
</td>
<td>
<xsl:attribute name="width">
<xsl:value-of select="./width2"/>
</xsl:attribute>
</td>
<td>
<xsl:attribute name="width">
<xsl:value-of select="./width3"/>
</xsl:attribute>
</td>
</tr>
</xsl:template>
答案 1 :(得分:3)
更多XSLT风格:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="size">
<table>
<tr>
<xsl:apply-templates/>
</tr>
</table>
</xsl:template>
<xsl:template match="size/*">
<td style="width:{.}px;">
<!-- Do stuff -->
</td>
</xsl:template>
</xsl:stylesheet>
应用于您的样本结果将是:
<table>
<tr>
<td style="width:5px;"></td>
<td style="width:4px;"></td>
<td style="width:7px;"></td>
</tr>
</table>