【发布时间】:2016-04-05 06:23:19
【问题描述】:
我想添加一个属性 type="bottom line" 到其下一个兄弟有表格注释条目的行,我做到了..但问题是如果有合并的列我必须添加 type="bottom行”也添加到该条目,并且当条目数相等时,此添加应停止。
输入 XML
<table>
<row>
<entry id="1"></entry>
<entry id="2"></entry>
<entry id="3" merged="1"></entry>
<entry id="4"></entry>
<entry id="5"></entry>
</row>
<row>
<entry id="1"></entry>
<entry id="2"></entry>
<entry id="3" merged="1"></entry>
<entry id="4"></entry>
<entry id="5"></entry>
</row>
<row>
<entry id="6" merged="1"></entry>
<entry id="7"></entry>
<entry id="8"></entry>
<entry id="9"></entry>
</row>
<row>
<entry id="10"></entry>
<entry id="11"></entry>
<entry id="12"></entry>
<entry id="13"></entry>
<entry id=“14"></entry>
</row>
<row>
<entry id="15"></entry>
<entry id="16"></entry>
<entry id="17"></entry>
</row>
<row>
<entry type="table notes">test</entry>
<entry type="table notes">test</entry>
<entry type="table notes">test</entry>
</row>
</table>
预期输出
<table>
<row>
<entry id="1"></entry>
<entry id="2"></entry>
<entry id="3" merged="1"></entry>
<entry id="4"></entry>
<entry id="5"></entry>
</row>
<row>
<entry id="1"></entry>
<entry id="2"></entry>
<entry id="3" merged="1" type="bottom line"></entry>
<entry id="4"></entry>
<entry id="5"></entry>
</row>
<row>
<entry id="6" merged="1" type="bottom line"></entry>
<entry id="7"></entry>
<entry id="8"></entry>
<entry id="9"></entry>
</row>
<row>
<entry id="10"></entry>
<entry id="11"></entry>
<entry id="12"></entry>
<entry id="13"></entry>
<entry id="14"></entry>
</row>
<row>
<entry id="15" type="bottom line"></entry>
<entry id="16" type="bottom line"></entry>
<entry id="17" type="bottom line"></entry>
</row>
<row>
<entry type="table notes">test</entry>
<entry type="table notes">test</entry>
<entry type="table notes">test</entry>
</row>
</table>
到目前为止我写的 XSLT:
-
用于在表格注释中添加底线
底线
合并条目
<xsl:template match="row/entry[@merged]" mode="merged">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:attribute name="type">bottom line</xsl:attribute>
<xsl:apply-templates/>
</xsl:copy>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="row[last()-1]">
<xsl:if test="count(./entry) > count(./preceding-sibling::row/entry)">
<xsl:apply-templates mode="merged"/>
</xsl:if>
</xsl:template>
请帮我解决这个问题。 谢谢..
【问题讨论】: