XSLT问题附加到最后一个元素

时间:2016-02-01 22:26:10

标签: xslt

我可以匹配on子句或p元素,但我的要求是在输出xml中,标签中的最后一个ei(&&&&)应该附加到最后一个p元素,即某些p5文本& &&。应该是输出。

<clause>
  <ei>$$$</ei>
   <p>some p1 text</p>
   <p>some p2 text</p>
    <clause2>   
       <p>some p3 text</p>
       <p>some p4 text</p>
        ... 
        ...
       <p>some p5 text</p>
    </clause2>  
  <ei>&&&</ei>
</clause>

1 个答案:

答案 0 :(得分:0)

使用此XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:fn="http://www.w3.org/2005/xpath-functions"
                xmlns:str="http://exslt.org/strings"
                extension-element-prefixes="fn str">

    <xsl:output method="xml" version="1.0" indent="yes"/>
    <xsl:strip-space elements="*"/>                                                                                                                                    

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

    <xsl:template match="*">
        <xsl:element name="{name(.)}">
            <xsl:copy-of select="./@*"/>
            <xsl:apply-templates select="./node()"/>
        </xsl:element>
    </xsl:template>

    <xsl:template match="text()">
        <xsl:value-of select="."/>
    </xsl:template>

    <xsl:template match="clause2[last()]/p[last()]">
        <xsl:element name="{name(.)}">
            <xsl:copy-of select="./@*"/>
            <xsl:apply-templates select="./node()"/>
            <xsl:copy-of select="/clause/ei[last()]/node()"/>
        </xsl:element>
    </xsl:template>

    <xsl:template match="/clause/ei[last()]">
    </xsl:template>
</xsl:stylesheet>

测试:http://xsltransform.net/bFN1y9H/2