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']