[解决]XSL如果:测试与多个测试条件
感谢@IanRoberts,我不得不用我的节点正规化空间功能检查,如果他们是空的。
<xsl:if test="((node/ABC!='') and (normalize-space(node/DEF)='') and (normalize-space(node/GHI)=''))">
This worked perfectly fine.
</xsl:if>
[问题]
我试图创建一个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错误。即
<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>
显示您的XML示例。另外请注意,就xpath而言,包含空格的元素是_not_空。你可能希望查看'normalize-space'函数。 –
嗨@IanRoberts,我在一个需要xslt查看数据的web应用程序中工作。不知道如何获得XML。但是,我也尝试了normalize-space函数(normalize-space说节点可能有空格(?))。我正在测试的列没有任何价值。 – noobcode
您可以放入一个[身份转换](http://en.wikipedia.org/wiki/Identity_transform#Using_XSLT),该简单地返回与之前相同的XML。有很多原因可能导致它无法正常工作,例如无关的空白,名称空间不匹配,区分大小写,上下文不是您认为的那样等等 - - 无法在没有看到输入的情况下进行诊断。 –