如果 XSLT 中存在标记,则在标记前添加 Space
Add Space Before a tag if it is Present in XSLT
我正在使用 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 是标签并且要设置样式,设置样式的条件是添加 space 如果之前存在任何其他标签或者不需要 space。
上面的代码不起作用,我是 XSl 的新手,你能帮帮我吗?
提前致谢。
我会将条件放入匹配模式的谓词中,例如
<xsl:template match="LEXVAR[preceding-sibling::*]">
<span><xsl:text> </xsl:text></span>
<xsl:next-match/>
</xsl:template>
然后确保你有一个身份转换模板或其他模板处理其他 LEXVAR
元素,以便 next-match
有一些模板可以调用。
试试这个来解决您的问题:
<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>
我正在使用 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 是标签并且要设置样式,设置样式的条件是添加 space 如果之前存在任何其他标签或者不需要 space。
上面的代码不起作用,我是 XSl 的新手,你能帮帮我吗? 提前致谢。
我会将条件放入匹配模式的谓词中,例如
<xsl:template match="LEXVAR[preceding-sibling::*]">
<span><xsl:text> </xsl:text></span>
<xsl:next-match/>
</xsl:template>
然后确保你有一个身份转换模板或其他模板处理其他 LEXVAR
元素,以便 next-match
有一些模板可以调用。
试试这个来解决您的问题:
<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>