我可以匹配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>
答案 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>