在XSLT中test =“element [@attribute]”做了什么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在XSLT中test =“element [@attribute]”做了什么?相关的知识,希望对你有一定的参考价值。
这究竟是做什么的?
<xsl:if test="./employee/first-name[@id='14']" >
我的意思是,如果这个案例是真的,如果./employee/first-name[@id]
!= null
或""
,或者什么?
编辑
我已经编辑了上面的语句,所以它测试id = 14的元素名字是否有一个正文或它的正文包含数据,如果名字事件没有正文,则返回true?
如果qazxsw poi中的查询返回至少一个节点,则条件计算结果为true。
您提供的新XSLT表达式:
<xsl:if test=...>
当且仅当在<xsl:if test="./employee/first-name[@id='14']" >
下存在first-name
属性等于字符串employee
时才会评估为真
id
似乎有一些缺失的部分,因为最后'14'
会抛出错误。但是,让我们看看:
./ search within current node employee/first-name for an employee tag with an first-name child tag [@id] where first-name tag have an id attribute !=null and that first-name tag have some value
<employee><first-name id="" /></employee> <!-- does NOT match -->
<employee><first-name id="014" /></employee> <!-- does NOT match -->
<employee>
<first-name id="foobar" />
<first-name id="14" /> <!-- DOES match -->
</employee>
测试表达式(如传统语言中的or ""
)。表达式的结果被评估为布尔值。
在您的情况下,表达式是一个XPath选择器(<xsl:if>
) - 它将始终返回一个节点集。仅当节点集为空时(例如,未找到匹配的节点),才将节点集评估为if
。
表达式也可能像/employee/first-name[@id]
。现在表达式结果是一个数字,如果它是零或false
,number(/employee/id)
在所有其他情况下被评估为false
。
其他值为NaN
的是空字符串true
(在所有其他情况下为false
)和''
本身的结果。请注意,还有一个true
函数返回布尔值false()
。
另请注意,根据描述的字符串规则,字符串true()
的计算结果为true
。
以上是关于在XSLT中test =“element [@attribute]”做了什么?的主要内容,如果未能解决你的问题,请参考以下文章
基于列表中的日期字段,在每一天对使用XSLT 1.0的列表进行分组
insert an element at index into array