首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >XSL if:使用多个测试条件进行测试

XSL if:使用多个测试条件进行测试
EN

Stack Overflow用户
提问于 2014-01-27 20:34:29
回答 3查看 209.7K关注 0票数 30

已解决的

多亏了@IanRoberts,我必须在我的节点上使用normalize space函数来检查它们是否为空。

<xsl:if test="((node/ABC!='') and (normalize-space(node/DEF)='') and (normalize-space(node/GHI)=''))">
  This worked perfectly fine.
</xsl:if>

Problem

我正在尝试创建一个xsl条件来检查节点组合是否为空。我已经尝试了下面的条件,但它们不起作用,谁有办法让它工作

<xsl:if test=" node/ABC!='' and node/DEF='' and node/GHI='' ">
This does not work
</xsl:if>

我也试过

<xsl:when test="((node/ABC!='') and (node/DEF='') and (node/GHI=''))">
This does not work either..
</xsl:when>

并且还尝试过

<xsl:if test="(node/ABC!='')>
<xsl:if test="(node/DEF='')>
<xsl:if test="(node/GHI='')">
Nope not working..
</xsl:if>
</xsl:if>
</xsl:if>

I,然后尝试使用单个xsl:if条件,下面是观察结果

<xsl:if test="node/ABC!=''>
**This is working fine**
</xsl:if>

但是,如果我尝试搜索空条件,即

<xsl:if test="node/ABC=''>
**This does not work**
</xsl:if>

另外,如果我尝试使用== (双精度等于),那么它会给出xslt错误。i.e

<xsl:if test="node/ABC==''>
***This gives a compilation error***
</xsl:if>

我需要帮助弄清楚如何让我的xsl:if测试工作,以检查多个条件。提前感谢。

编辑:在这里更新所有节点都不为空的if条件,当我尝试检查三个空节点中的任何其他节点时,它不起作用。

例如:

<xsl:if test=" node/ABC!='' and node/DEF!='' and node/GHI!='' ">
This condition works perfectly fine.
</xsl:if>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-23 01:20:34

多亏了@IanRoberts,我必须在我的节点上使用normalize space函数来检查它们是否为空。

<xsl:if test="((node/ABC!='') and (normalize-space(node/DEF)='') and (normalize-space(node/GHI)=''))">
  This worked perfectly fine.
</xsl:if>
票数 30
EN

Stack Overflow用户

发布于 2014-01-27 20:53:40

尝试使用empty()函数:

<xsl:if test="empty(node/ABC/node()) and empty(node/DEF/node())">
    <xsl:text>This should work</xsl:text>
</xsl:if>

这将ABCDEF标识为空,因为它们没有任何子节点(没有元素、没有文本节点、没有处理指令、没有注释)。

但是,正如@Ian所指出的,您的元素可能并不是真正的空,或者这可能不是您的实际问题-您没有显示您的输入XML是什么样子的。

导致错误的另一个原因可能是您在树中的相对位置。只有当周围的模板与node的父元素匹配,或者迭代node的父元素时,这种测试条件的方法才有效。

票数 2
EN

Stack Overflow用户

发布于 2020-10-22 15:11:56

只是为了完整性和那些不了解XSL 1可以选择多个条件。

<xsl:choose>
 <xsl:when test="expression">
  ... some output ...
 </xsl:when>
 <xsl:when test="another-expression">
  ... some output ...
 </xsl:when>
 <xsl:otherwise>
   ... some output ....
 </xsl:otherwise>
</xsl:choose>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21381055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档