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/