我有一个xml,其中我的标记<T>
只有在后面至少有一个标记<C>
作为同级标记的情况下才能被转换。
<Doc>
<T>T1</T>
<A>A1</A>
<T>T2</T>
<C>C2</C>
<T>T3</T>
<X>X1</X>
</Doc>
应变为:T1A1T2C2X1
我目前有:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml"/>
<xsl:template match="/">
<xsl:element name="Doc">
<xsl:apply-templates select="*" />
</xsl:element>
</xsl:template>
<xsl:template match="A">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="C">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="X">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="T[following-sibling::* ??? exists C">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="*">
</xsl:template>
</xsl:stylesheet>
不知道如何实现match="T[following-sibling::* ??? exists C"
使用:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/*">
<xsl:apply-templates select="*"/>
</xsl:template>
<xsl:template match="T[preceding-sibling::*[1][self::C]]"/>
<xsl:template match="*">
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
输出:
T1A1T2C2X1