在Saxon-PE 9.2.0.6中使用XSLT 2.0,我需要使用工作表的mergecells元素中的值从Excel数据sheet.xml中将元素'w:gridSpan'拉到第2行中的跨区列数。任何人都可以给我一个关于如何做到这一点的建议吗?
输入XML是这样的:
b
我的XSLT中与输入XML有关的部分:
<row r="2" spans="1:6" ht="33" customHeight="1">
<c r="A2" s="6" t="s">
<v>33</v>
</c>
<c r="B2" s="12" t="s">
<v>0</v>
</c>
<c r="C2" s="13"/>
<c r="D2" s="13"/>
<c r="E2" s="13"/>
<c r="F2" s="13"/>
</row>
…………
<mergeCells count="2">
<mergeCell ref="B1:F1"/>
<mergeCell ref="B2:F2"/>
</mergeCells>
期望的输出:
<w:tc>
<w:tcPr>
<w:vAlign w:val="bottom"/>
<xsl:choose>
<xsl:when test="**e:sheetData/e:row[position() = 2]**">
<xsl:element name="w:gridSpan">
<xsl:attribute name="w:val">
<xsl:value-of select="**dg3:get_column_span**"/>
</xsl:attribute>
</xsl:element>
</xsl:when>
</xsl:choose>
我还建议使用以下两个函数,但不知道如何实现它们以获取电子表格行1和2的第2行示例中的列数,并且建议的2个函数如下:
<w:tc>
<w:tcPr>
<w:vAlign w:val="bottom"/>
<w:gridSpan w:val="1"/>
</w:tcPr>
答案 0 :(得分:0)
不确定你要从哪里开始,这将决定精确的路线但是:
<xsl:attribute name="w:val">
<xsl:value-of select="mergeCells/@count"/>
</xsl:attribute>
为你获取2 ...
另外我很困惑为什么你在/选择这里时使用它并不是一个直接的模板匹配。