xml - XSLT 否则 block 不执行

标签 xml xslt xslt-1.0

XML

<Categories>
  <category>
    <blog>ABC</blog>
    <link>open</link>
    <link1>close</link1>
  </category>
</Categories>

XSLT

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="category">

  <xsl:variable name="openCloseValidation">
     <xsl:value-of select="link" />

  </xsl:variable>

    <xsl:variable name="holidayValidation">
     <xsl:value-of select="link1" />

  </xsl:variable>

    <h1><xsl:value-of select="normalize-space($openCloseValidation)" /></h1>
    <h1><xsl:value-of select="normalize-space($holidayValidation)" /></h1>

    <xsl:choose>
      <xsl:when test="contains($openCloseValidation, 'open')">
        <xsl:if test="not(contains($holidayValidation, 'close'))">
          <xsl:value-of select="'true'" />
        </xsl:if>
      </xsl:when>

      <xsl:otherwise>
        <xsl:value-of select="'false'" />
      </xsl:otherwise>

  </xsl:choose>
</xsl:template>
</xsl:stylesheet>

第一个条件不满足但不进入否则阻塞显示false。

如果这里有问题,你能告诉我吗?

最佳答案

满足第一个 xsl:when 条件,因为 contains($openCloseValidation, 'open') 为真。但是在您的 xsl:when 中,您有一个 xsl:if,如果失败,则不会有任何输出。

你应该把它重写成这样......

<xsl:choose>
  <xsl:when test="contains($openCloseValidation, 'open') and not(contains($holidayValidation, 'close'))">
      <xsl:value-of select="'true'" />
  </xsl:when>
  <xsl:otherwise>
    <xsl:value-of select="'false'" />
  </xsl:otherwise>
</xsl:choose>

顺便说一句,像这样写你的变量声明要好得多......

<xsl:variable name="openCloseValidation" select="link" />

关于xml - XSLT 否则 block 不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49680730/

相关文章:

c# - 如何在 C# 中从混合 xml/二进制文件的 header 读取 XML 数据

ruby-on-rails - 没有 pretty-print 的 Rails XML 构建器(即缩小的 XML)

c# - 如何将对象集合/字典序列化为 <key>value</key>

xslt - 使用 XSLT 将命名空间添加到 XML 的特定节点

variables - 如何从 for-each 传递值以从 XSL 中的另一个节点集中进行选择?

c++ - 在 XSLT 1.0 中生成 UUID

sitecore - GetItemsOfType() sitecore 扩展函数返回什么?

c# - 具有隐藏继承成员的新属性的 XML 序列化类

javascript - 将 XSL 变量传递给内联 JavaScript 函数

xml - 如何强制将每个双引号“转义为 XML 字符实体”