Saxon-PE 9.2.0.6でXSLT 2.0を使用すると、ExcelデータシートXMLから要素 'w:gridSpan'は、シートのmergecells要素の値を使用して行2のスパンされた列の数です。誰も私にこれを行う方法の提案を与えることができますか?XSLT 2.0とSaxon-PE 9.2.0.6を使用してWord文書の 'gridSpan'要素にExcel表の列のスパン値を抽出する
入力XMLがこれです:私も示唆していたき
<w:tc>
<w:tcPr>
<w:vAlign w:val="bottom"/>
<w:gridSpan w:val="1"/>
</w:tcPr>
:
<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>
入力XMLに関する私のXSLTの一部:
<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>
所望の出力次の2つの関数を使用するが、列数を取得するためにそれらを実装する方法はわからないspanneスプレッドシートの行1と2、及び提案2つのfuncsの行2例のDは、次のとおりです。
A B C D E F
Optimum Fixed Income Fund Class A
Year Ended
<xsl:function name="dg3:get_column_span">
<xsl:param name="cell"/>
<xsl:choose>
<xsl:when test="$mergeCells[e:mergeCell[matches(@ref, concat('^',$cell/@r,':'))]]">
<xsl:variable name="merge"
select="$mergeCells//e:mergeCell[matches(@ref, concat('^',$cell/@r,':'))]"/>
<xsl:value-of
select="dg3:get_column_number(replace($merge/@ref, '([^:]+):([^;]+)','$2')) -
dg3:get_column_number(replace($merge/@ref, '([^:]+):([^;]+)','$1')) + 1"
/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="1"/>
</xsl:otherwise>
</xsl:choose>
</xsl:function>
<xsl:function name="dg3:get_column_number">
<xsl:param name="range"/>
<xsl:value-of
select="string-to-codepoints(substring($range,1,1)) -
string-to-codepoints('A') + 1"/>
</xsl:function>
あなたの質問は不明です。この例で期待される結果は何ですか?それを得るために必要なロジックは何ですか? IOW、手動で行う必要がある場合は、どうすればよいですか? –