如果标记在XSLT中存在,则在标记之前添加空格

时间:2015-02-20 07:40:15

标签: html css xml xslt xslt-2.0

我使用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的新手,请你帮忙。 提前谢谢。

2 个答案:

答案 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>