如果 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>