小编Rud*_* TP的帖子

XSLT,如何找到前一个兄弟的(包含文本)最后一个带有文本的子元素?

在下面的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)

xslt

1
推荐指数
1
解决办法
2692
查看次数

请为Table rowspan和colspan问题建议XSLT代码

<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

0
推荐指数
1
解决办法
4140
查看次数

标签 统计

xslt ×2