在下面的XML和XSLT中,在xml中元素'i'是当前位置,在那里我需要找到前一个兄弟的最后一个子文本.
Input1.xml
<root>
<aa>
<a>
<b>Text1</b>
<c>Text2</c>
<d>Text3
<n>Text11
<o>Text12
<p>Text13</p>
</o>
</n>
</d>
</a>
<e>
<f>
<g>Text4</g>
</f>
<h>Text5
<j>Text7</j>
<k>Text8</k>
</h>
</e>
<i>Text6</i>
</aa>
</root>
Run Code Online (Sandbox Code Playgroud)
Child.xsl
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
<xsl:template match="i">
<xsl:variable name="var0"><xsl:apply-templates select="preceding-sibling::*[1]"/></xsl:variable>
<xsl:variable name="var1">
<xsl:for-each select="var0">
<xsl:value-of select="child::*[last()]"/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="var2">
<xsl:for-each select="$var1">
<xsl:value-of select="child::*[last()]"/>
</xsl:for-each>
</xsl:variable>
<ppp><xsl:copy-of select="."/><jj>-The last preceding child text is <xsl:value-of select="$var2"/>-</jj></ppp>
</xsl:template> …Run Code Online (Sandbox Code Playgroud) <article>
<table id="tbl1">
<caption><p>Table 1. Sample Table</p></caption>
<thead>
<tr>
<td colspan="3">I</td>
<td colspan="4">II</td>
</tr>
<tr>
<td>Sl. No.</td>
<td>Name</td>
<td>Place</td>
<td>Subject 1</td>
<td>Subject 2</td>
<td>Subject 3</td>
<td>Grade</td>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="3">1</td>
<td colspan="2">Kishan</td>
<td>95</td>
<td>96</td>
<td rowspan="2">97</td>
<td>A</td>
</tr>
<tr>
<td>Kishan</td>
<td>Bangalore</td>
<td>94</td>
<td>96</td>
<td>A</td>
</tr>
<tr>
<td>Likhith</td>
<td>Bhadravathi</td>
<td>94</td>
<td>94</td>
<td>99</td>
<td>A</td>
</tr>
</tbody>
</table>
</article>
Run Code Online (Sandbox Code Playgroud)
必需OutPut:如果colspan是2在第二个单元格中编码,则第三个不应该在那里,下一个单元格名称应为"colname ="3"(起始索引为0).对于rowspan,如果存在行的第一个单元格具有rowspan = "3",然后接下来的两行不应该有colname ="0",那些接下来的两行起始单元格将具有名称="1"(起始索引为0,这就是为什么1表示第二个单元格).请建议使用XSLT编码二解决了同一表中存在的rowspan和colspan.
<article>
<table id="tbl1">
<caption><p>Table 1. Sample Table</p></caption>
<thead>
<tr>
<td colname="0:0">I</td>
<td colname="0:3">II</td>
</tr>
<tr>
<td colname="1:0">Sl. …Run Code Online (Sandbox Code Playgroud) xslt ×2