xslt 无法在“”中为参数分配布尔值
当预期的输出应该是什么都没有时,这段代码给了我输出 test
..
是我的 XSLT 处理器有问题还是..? :
<xsl:template match="/">
<xsl:param name="IsTextArea">
<xsl:choose>
<xsl:when test="false()">
<xsl:value-of select="true()"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="false()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:param>
<html>
<xsl:choose>
<xsl:when test="$IsTextArea">test
</xsl:when>
</xsl:choose>
</html>
</xsl:template>
顺便说一句,我需要一个原始 XSLT 1.0 的解决方案(没有扩展和类似的东西)。
是否可以在 XSLT 1.0 中为 param
设置布尔参数?
this code is giving me the output test
when the expected output should be nothing..
Is it something wrong with my XSLT processor or..? :
<xsl:template match="/">
<xsl:param name="IsTextArea">
<xsl:choose>
<xsl:when test="false()">
<xsl:value-of select="true()"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="false()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:param>
<html>
<xsl:choose>
<xsl:when test="$IsTextArea">test
</xsl:when>
</xsl:choose>
</html>
</xsl:template>
Btw i need a solution for raw XSLT 1.0 (no extensions and stuff like that).
Is it possible to set a boolean parameter for a param
in XSLT 1.0?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您的参数正在计算为字符串。你应该使用:
Your parameter is evaluating to a string. You should use:
xsl:value-of 指令将您提供的任何内容转换为字符串。所以 true() 变为“真”,而 false() 变为“假”。当您在布尔上下文中使用字符串时,任何非空字符串都将变为 true(),而“”将变为 false()。因此 boolean->string->boolean 转换不会往返。在 XSLT 2.0 中,答案是使用 xsl:sequence 而不是 xsl:value-of;在 1.0 中,只需使用“yes”和“no”等字符串以避免混淆。
The xsl:value-of instruction converts whatever you give it to a string. So true() becomes "true", and false() becomes "false". When you use a string in a boolean context, any non-empty string becomes true(), while "" becomes false(). So boolean->string->boolean conversion doesn't round-trip. In XSLT 2.0 the answer is to use xsl:sequence instead of xsl:value-of; in 1.0, just use strings like "yes" and "no" to avoid confusion.
不应该是这样的吗:
都觉得你的真假格格不入。
Shouldn't it be like this:
Are think your true and false were out of place.