首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >w:vMerge from Word ML to rowspan in HTML (在HTML中从Word ML合并到行跨度

w:vMerge from Word ML to rowspan in HTML (在HTML中从Word ML合并到行跨度
EN

Stack Overflow用户
提问于 2016-08-16 14:42:44
回答 1查看 385关注 0票数 0

我们使用XSLT将Word文件转换为XML。如何获取表中的rowspan属性。

这是实现这一点的XSLT代码。

代码语言:javascript
复制
<xsl:template match="w:tc">
    <xsl:choose>
        <xsl:when test="w:tcPr/w:vMerge[@w:val='restart'] or w:tcPr[not(w:vMerge)]">
            <td>
                <xsl:if test="w:tcPr/w:gridSpan">
                    <xsl:attribute name="colspan" select="w:tcPr/w:gridSpan/@w:val"/>
                </xsl:if>
                <xsl:if test="w:tcPr/w:vMerge[@w:val='restart']">
                <xsl:value-of select="count(parent::w:tr/following-sibling::w:tr[w:tc/w:tcPr/w:vMerge[not(@w:val)]])"/>
                </xsl:if>
                <xsl:apply-templates/>
            </td>
        </xsl:when>
    </xsl:choose>
</xsl:template>

然而,这段代码计算的是所有的行。我需要将计数限制到下一次@w:val='restart‘。这在XSLT中是可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2016-08-16 15:12:37

如果您使用的是XSLT3.0,有一个<<比较运算符可以测试一个节点是否在另一个节点之前(从2.0开始),您可以用一个字母绑定下一个@w:val='restart'。我可以想象一些类似的东西:

代码语言:javascript
复制
let $guard := parent::w:tr/following-sibling::w:tr[@w:val='restart'][1]
  (: Note: I probably got the above XPath wrong so it needs fine-tuning :)
return count(
  parent::w:tr/following-sibling::w:tr
    [. << $guard]
    [w:tc/w:tcPr/w:vMerge[not(@w:val)]]
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38968183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档