Xml fn:布尔值,它的作用是什么?

Xml fn:布尔值,它的作用是什么?,xml,xquery,Xml,Xquery,我已经读过一些文章,但我仍然对XQuery3.0中的“fn:boolean”感到困惑……这是一个函数吗 这就是我所看到的: 例如: 如果我把fn:boolean((1,2)>(5000,6,1)),它是真的 如果我把fn:boolean((6,1)>(1,99,22)),它也是真的 我真的很困惑这个函数,尽管网上的文章说这个函数很少被调用,但我还是想弄清楚它的作用是什么…好吧,你认为XQuery中(6,1)>(1,99,22)的结果是什么?这已经给出了一个布尔值,因此您可能应该首先开始了解序列

我已经读过一些文章,但我仍然对XQuery3.0中的“fn:boolean”感到困惑……这是一个函数吗 这就是我所看到的:

例如: 如果我把fn:boolean((1,2)>(5000,6,1)),它是真的

如果我把fn:boolean((6,1)>(1,99,22)),它也是真的


我真的很困惑这个函数,尽管网上的文章说这个函数很少被调用,但我还是想弄清楚它的作用是什么…

好吧,你认为XQuery中
(6,1)>(1,99,22)
的结果是什么?这已经给出了一个布尔值,因此您可能应该首先开始了解序列的比较:表示“当且仅当存在一对原子值时,比较结果为真,一个在第一个操作数序列中,另一个在第二个操作数序列中,具有所需的大小关系”。因此,当左侧第一个序列中的
6
大于第二个序列中的
1
时,比较结果为真


调用
boolean
然后调用该值不会改变这一点,因为布尔值函数只给出传入的布尔值。

那么,您认为XQuery中
(6,1)>(1,99,22)
的结果是什么?这已经给出了一个布尔值,因此您可能应该首先开始了解序列的比较:表示“当且仅当存在一对原子值时,比较结果为真,一个在第一个操作数序列中,另一个在第二个操作数序列中,具有所需的大小关系”。因此,当左侧第一个序列中的
6
大于第二个序列中的
1
时,比较结果为真


调用
boolean
然后调用该值不会改变这一点,因为布尔值的函数只提供传入的布尔值。

函数
fn:boolean(X)
返回X的有效布尔值。例如,有效布尔值1为真,0为假,“真”为真,“假”,“false”是(等待它)true。节点(或非空节点序列)的EBV是true,这使得像
X[following sibling::X]
这样的表达式工作

布尔值的有效布尔值是未更改的布尔值:您的示例就是这样

有两种情况下,对fn:boolean的调用是无意义的:

  • 其中函数的参数已经是布尔值,如您的示例所示

  • 调用出现在上下文中,例如XPath 2.0“if”表达式的条件,或方括号中的谓词,或
    xsl:if
    test
    属性,其中实际上已经存在对
    fn:boolean()
    的隐式调用


在其他上下文中,例如,当您向函数提供参数或绑定XSLT或XQuery变量的值时,显式调用fn:boolean有助于将值强制为正确的类型。它还可以帮助代码的读者理解正在发生类型转换。

函数
fn:boole(X)
返回X的有效布尔值。例如,有效布尔值1为真,0为假,“真”为真,“假”,假“假”为(等待它)真。节点(或非空节点序列)的EBV为真,这使得像
X[以下同级::X]
这样的表达式工作

布尔值的有效布尔值是未更改的布尔值:您的示例就是这样

有两种情况下,对fn:boolean的调用是无意义的:

  • 其中函数的参数已经是布尔值,如您的示例所示

  • 调用出现在上下文中,例如XPath 2.0“if”表达式的条件,或方括号中的谓词,或
    xsl:if
    test
    属性,其中实际上已经存在对
    fn:boolean()
    的隐式调用


在其他上下文中,例如,当您向函数提供参数或绑定XSLT或XQuery变量的值时,显式调用fn:boolean可能有助于将值强制为正确的类型。它还可以帮助代码的读者理解正在发生类型转换。

那么((1,2)>(5000,6,1))?1比5000小得多,“大于”一点都不是真的…编辑:我想我算出来了,如果我的概念错了,请纠正我。如果左边的任何数字大于右边,则为“真”。因此,如果我输入((2,3)>(90,99100)),则返回值为“假”。是的,你是对的,有一对(…)第一个操作数序列中的一个值和第二个操作数序列中的另一个值,对于
的情况,具有“所需的幅值关系”,可以表示为“左侧的任何数字大于右侧的任何数字”,或者可能表示为“左侧的至少一个数字大于右侧的至少一个数字”那么((1,2)>(5000,6,1))呢?1比5000小得多,而“大于”一点都不是真的…编辑:我想我算出来了,如果我的概念是错的,请纠正我。如果左边的任何数字大于右边,它就是“真的”。所以如果我把((2,3)>(90,99100)),返回值是“假的”。是的,你是对的,“有一对(..)值,一个在第一个操作数序列中,另一个在第二个操作数序列中,具有所需的量值关系”。对于
>,
的情况,可以表示为“左侧的任何数字都大于右侧”或左侧至少有一个数字大于右侧至少一个数字”。