Xslt XSL转换<;Para>;行合并时缺少内容

Xslt XSL转换<;Para>;行合并时缺少内容,xslt,Xslt,输入 A. B C D F 11 12 13 14 23 24 输出: <?xml version="1.0"?> <TABLE> <THEAD> <ROW id="rh"> <CELL rowmerged="F" rowspan="1" > <Para >A</Para> </CELL> <CELL rowm

输入


A.
B
C
D
F
11
12
13
14
23
24
输出:

<?xml version="1.0"?>
<TABLE>
<THEAD>
    <ROW id="rh">
        <CELL rowmerged="F"  rowspan="1" >
            <Para >A</Para>
        </CELL>
        <CELL rowmerged="F"  rowspan="1" >
            <Para >B</Para>
        </CELL>
        <CELL rowmerged="F"  rowspan="1" >
            <Para >C</Para>
        </CELL>
        <CELL rowmerged="F"  rowspan="1" >
            <Para >D</Para>
        </CELL>
        <CELL rowmerged="F"  rowspan="1" >
            <Para >F</Para>
        </CELL>
    </ROW>


</THEAD>
<TBODY editable="T">
    <ROW id="r1">
        <CELL rowmerged="T"  rowspan="2" >
            <Para >11</Para>
        </CELL>
        <CELL rowmerged="T"  rowspan="2" >
            <Para >12</Para>
        </CELL>
        <CELL rowmerged="F"  rowspan="1" >
            <Para >13</Para>
        </CELL>
        <CELL rowmerged="F"  rowspan="1" >
            <Para >14</Para>
        </CELL>
        <CELL rowmerged="T"  rowspan="2" >
            <Para ></Para>
        </CELL>
    </ROW>

    <ROW id="r2">
        <CELL rowmerged="T"  rowspan="2" >
            <Para ></Para>
        </CELL>
        <CELL rowmerged="T"  rowspan="2" >
            <Para ></Para>
        </CELL>
        <CELL rowmerged="F"  rowspan="1" >
            <Para >23</Para>
        </CELL>
        <CELL rowmerged="F"  rowspan="1" >
            <Para >24</Para>
        </CELL>
        <CELL rowmerged="T"  rowspan="2" >
            <Para ></Para>
        </CELL>
    </ROW>
</TBODY>
</TABLE>

A.
B
C
D
F
11
12
13
14

要保留没有文本节点的元素,应执行以下操作:

<CELL>
 Para not found in OUTPUTXML
</CELL>

如果您能更清楚地解释您想要了解的内容,这将更有帮助。

发布您的XSLT代码(并使用带前导和尾随“`”的转义尖括号标记将它们标记为代码)请参阅上面的XSL定义了如何合并行及其工作精细无问题。请参阅上面的XSL定义了如何合并行及其工作精细无问题。在合并之前,如果单元格有空的Para,则在合并之后,单元格为空,并且先前声明的带有属性的Para不存在。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"    version="1.0">

 <xsl:template match="@*|node()">
<xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
 </xsl:template>

 <xsl:template match="CELL">
<CELL rowmerged="F" rowspan="1">
  <xsl:apply-templates select="node()"/>
</CELL>
  </xsl:template>

  <xsl:template match="Para[not(normalize-space())][../@rowmerged='T']">
<xsl:variable name="cellnum" select="count(../preceding-sibling::CELL) + 1" />
<xsl:variable name="matchingCells" select="
    ../../preceding-sibling::ROW/CELL[$cellnum]/Para" />
<xsl:copy-of select="$matchingCells[normalize-space()][last()]" />
 </xsl:template>
<CELL>
 Para not found in OUTPUTXML
</CELL>
<Para>
    <xsl:value-of select="$matchingCells[normalize-space()][last()]"/>
</Para>
Para[not(normalize-space())][../@rowmerged='T']