在我的一个项目中,我必须扩展一些XSLT文件,这些文件是由一些第三方提供商在很早以前创建的-换句话说:我不能简单地向提供商询问更多信息。
但是,我偶然发现了以下内容:
在此项目中,大量XML文件被解释并加载到数据库中。为此,使用了诸如6个“互连” XSLT文件之类的文件,这些文件具有众多模板,变量,条件等。以下代码块让我头疼:
<xsl:variable name="Var1">
<xsl:choose>
<xsl:when test="SomeText">true</xsl:when>
<xsl:otherwise>false</xsl:otherwise>
</xsl:choose>
</xsl:variable>
据我了解(如果我没有完全误解的话),此代码用于确定新变量“ Var1”应返回哪个值。但是该部分
<xsl:when test="SomeText">
对我没有任何意义。 SomeText
不是布尔表达式,不是吗?此外,它不是变量,参数或可由test =“求值的任何东西。所有具有相同名称“ SomeText”的XSLT文件中唯一的东西就是模板之一。
因此,可以xsl:when
来检查模板是否被调用了吗?还是我遵循错误的线索,并且XML文件中必须包含“ SomeText”?
答案 0 :(得分:2)
在
<xsl:when test="SomeText">true</xsl:when>
当上下文节点具有名为SomeText
的子元素时,将返回 string "true"
。
所以,
<xsl:variable name="Var1">
<xsl:choose>
<xsl:when test="SomeText">true</xsl:when>
<xsl:otherwise>false</xsl:otherwise>
</xsl:choose>
</xsl:variable>
$Var1
在上述条件下的字符串值为"true"
,否则为"false"
。