lnamest和nameend更改为colspan



我想将namest和nameend属性值更改为colspan属性值

XML输入:

<row>
<entry nameend="col2" namest="col1">Claims</entry>
</row>

我有XSL:

<xsl:template match="row">
<tr>
<xsl:apply-templates/>
</tr>
</xsl:template>

<xsl:template match="entry">
<td>
<xsl:apply-templates/>
</td>
</xsl:template>

预期输出为:

<tr>
<td colspan="2">Claims</td>
</tr>

如果namest="1"nameend="3",则colspan的值将是3。它必须依赖于namest和nameend值。它必须从namest和nameend计算数字。

在没有给出规则的情况下,很难基于单个示例来提出算法。以下内容应适用于您的上述输入:

<xsl:template match="entry">
<xsl:variable name="start" select="substring-after(@namest, 'col')" />
<xsl:variable name="end" select="substring-after(@nameend, 'col')" />
<td colspan="{$end - $start + 1}">
<xsl:apply-templates/>
</td>
</xsl:template>

这是假设您使用的是XSLT1.0。如果您使用的是XSLT2.0处理器,并且样式表标记为version="2.0",那么您需要执行以下操作:

<xsl:template match="entry">
<xsl:variable name="start" select="number(substring-after(@namest, 'col'))" />
<xsl:variable name="end" select="number(substring-after(@nameend, 'col'))" />
<td colspan="{$end - $start + 1}">
<xsl:apply-templates/>
</td>
</xsl:template>

相关内容

  • 没有找到相关文章

最新更新