Xml XSLT-标识后跟另一个节点的节点
我有一个这样的xmlXml XSLT-标识后跟另一个节点的节点,xml,xslt,xslt-2.0,Xml,Xslt,Xslt 2.0,我有一个这样的xml <doc> <p>para<x>para</x>para<x>para</x>para</p> <p>para<x>para</x><x>para</x>para</p> </doc> paraparapara 帕拉帕拉 如果连续放置两个节点(后接另一个节点),则需要在节点之间添加“,”
<doc>
<p>para<x>para</x>para<x>para</x>para</p>
<p>para<x>para</x><x>para</x>para</p>
</doc>
paraparapara
帕拉帕拉
如果连续放置两个
节点(
后接另一个
节点),则需要在
节点之间添加“,”
因此,对于上面的示例xml,输出应该是
<doc>
<p>para<x>para</x>para<x>para</x>para</p>
<p>para<x>para</x>,<x>para</x>para</p>
</doc>
paraparapara
帕拉帕拉,帕拉帕拉
我试图编写一个xsl模板,用于标识注释的
,并添加了“,”,如下所示
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="x[following-sibling::*[1][self::x]]">
<x>
<xsl:apply-templates/>
</x>
<xsl:text>,</xsl:text>
</xsl:template>
,
但它在上述两种情况下都添加了“,”。(
后接另一个
节点,
后接文本)
是否要更正此xpath?使用以下同级:*[1]xpath只检查最近的同级元素,而不考虑文本节点。尝试使用以下同级::节点()[1]代替:
<xsl:template match="x[following-sibling::node()[1][self::x]]">
<x>
<xsl:apply-templates/>
</x>
<xsl:text>,</xsl:text>
</xsl:template>
,