我使用XSLT为我的XML文件创建样式。
这是我的代码:
<xsl:template match="LEXVAR">
<xsl:copy>
<xsl:apply-templates/>
<xsl:choose>
<xsl:when test="./preceding-sibling::LEXVAR">
<span class="neutral">
<xsl:text>, </xsl:text>
</span>
</xsl:when>
<xsl:when test="./preceding-sibling::*">
<span class="neutral">
<xsl:text> </xsl:text>
</span>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:copy>
</xsl:template>
在我的情况下:LEXVAR是标签,它将被设计样式,如果之前存在任何其他标签或者不需要空间,则样式的条件是添加空格。
上面的代码无效,我是XSl的新手,请你帮忙。 提前谢谢。
答案 0 :(得分:1)
我会将条件置于匹配模式的谓词中,例如
<xsl:template match="LEXVAR[preceding-sibling::*]">
<span><xsl:text> </xsl:text></span>
<xsl:next-match/>
</xsl:template>
然后确保您有一个身份转换模板或其他模板处理其他LEXVAR
元素,以便next-match
有一些模板可以调用。
答案 1 :(得分:1)
尝试此操作来解决您的问题:
<xsl:template match="LEXVAR">
<span class="exp">
<xsl:if test="./preceding-sibling::*">
<xsl:text> </xsl:text>
</xsl:if>
<xsl:text></xsl:text>
<xsl:apply-templates/>
</span>