【发布时间】:2014-04-28 15:50:32
【问题描述】:
我正在硬编码 colspan 值,但我可以根据一行中的表格单元格的数量来计算它,例如使用xsl:variable?
困难在于,XML 节点包含的属性比我试图使用 XSL 显示的要多,因此我不能引用 XML 本身进行计数。这就是为什么我想知道是否可以在 XSL 中引用 html 模板。
示例 XML:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="xsl/allcompanies.xsl"?>
<Companies>
<row Name="Company One" Address="Grote Markt 1" ZIP="1000" City="BRUSSEL" Country="BE" Telephone="02 261 05 55" Fax="" Email="" />
<row Name="Company Two" Address="Tielweg 10" ZIP="2803 PK" City="Gouda" Country="NL" Telephone="" Fax="" Email=""/>
<row Name="Company Three" Address="6 S.Millrock Drive" ZIP="UT 84121" City="Salt Lake City" Country="US" Telephone="+1 801 928 0000" Fax="" Email="" />
</Companies>
XSL:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<table>
<tr>
<th colspan="6">Companies</th>
</tr>
<tr>
<th>Name</th>
<th>Address</th>
<th>ZIP</th>
<th>City</th>
<th>Country</th>
<th>Telephone</th>
</tr>
<xsl:for-each select="Companies/row">
<tr>
<td><xsl:value-of select="@Name"/></td>
<td><xsl:value-of select="@Address"/></td>
<td><xsl:value-of select="@ZIP"/></td>
<td><xsl:value-of select="@City"/></td>
<td><xsl:value-of select="@Country"/></td>
<td><xsl:value-of select="@Telephone"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:transform>
我在想一些类似的事情
<th colspan="{count(//table/tr[last()]/td)}">Companies</th>
但是,你知道的……工作。
完全清楚我在这里尝试的(设置colspan)当然是微不足道的,我试图探讨一个潜在的问题,即xslt 在其自身上应用XPath。
【问题讨论】:
-
表格单元格的数据来自哪里?请添加一个示例输入 XML,以便人们可以对其进行实际测试。
-
@MathiasMüller 我已经编辑了这个问题以包含一些示例 XML,尽管我倾向于说,对于这个问题,它完全无关紧要。
标签: xml xslt xslt-1.0 xsl-variable