在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]。现在表达式结果是一个数字,如果它是零或falsenumber(/employee/id)在所有其他情况下被评估为false

其他值为NaN的是空字符串true(在所有其他情况下为false)和''本身的结果。请注意,还有一个true函数返回布尔值false()

另请注意,根据描述的字符串规则,字符串true()的计算结果为true

以上是关于在XSLT中test =“element [@attribute]”做了什么?的主要内容,如果未能解决你的问题,请参考以下文章

基于列表中的日期字段,在每一天对使用XSLT 1.0的列表进行分组

insert an element at index into array

如何在 XSLT 中保留 xml 元素的空格

Adding List Item Element At Runtime In Oracle Forms

XSLT 转换日期时间

用XSLT替换f:facet属性