我想知道如何在XSL 1.0中测试一个变量是否包含元素值或简单的字符串/数字。
<xsl:choose>
<xsl:when test="is the variable an element">
<!-- do some stuff -->
</xsl:when>
<xsl:otherwise>
<!-- do some other stuff -->
</xsl:otherwise>
</xsl:choose>
关于我的问题的更多细节
我有一个类似下面的XSL。有时变量可能是一个元素,有时该元素可能没有值(即nil =“true”)。这就是为什么我使用$imAStringButICouldHaveBeenAnElementForAllYouKnow[normalize-space()]
测试来检查该元素是否具有值。
然而,使用Saxon 6.5.5运行此XSL会失败并显示“该值不是节点集”。我可以理解为什么会这样,因为该变量确实不是一个节点集;在此之前,我需要进行额外的检查以确认变量是否包含适当的值。
XSL
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="imAStringButICouldHaveBeenAnElementForAllYouKnow" select="'string'"/>
<xsl:template match="/">
<!-- If this is an element I want to know does it have a value? -->
<xsl:if test="$imAStringButICouldHaveBeenAnElementForAllYouKnow[normalize-space()]">
<!-- do some stuff -->
</xsl:if>
</xsl:template>
</xsl:stylesheet>
<this>
。它必须有一个名称和一个相关的结束标签。我可以通过在变量声明中使用select="someNodeName"
属性来为变量赋予一个元素值。字符串或数字值与元素无关,只是一个独立的值。它们可以通过使用select="'I'm a string'"
或select="1"
来赋值给变量。 - undefined