Xquery中data()函数和string()函数之间的实际区别是什么?当我使用它们时,它们似乎都会返回相同的结果。有人能给我一个简单的例子说明它们有何不同?
let $dataset :=
<data-set cool="rad">
<!--- This is a comment -->
<pages cool2="rad2" more="i guess">
<page>
<title>Puppy</title>
<content>Puppies are great!</content>
</page>
<page>
<title>Dogs</title>
<content>Dogs are grown up!</content>
</page>
<page>
<title>Puppy</title>
<content>Puppies are great!</content>
</page>
</pages>
</data-set>
return $dataset/string()
(: data() returns the same thing as string() :)
(: return $dataset/data() :)
答案 0 :(得分:6)
string()
将始终返回一个字符串,而data()
将返回“类型值”。大部分时间都是xs:string
;但是,它也可以是xs:untypedAtomic
或任何其他原子类型(通常在模式中定义)。
也有一些不直观的案例。例如,在文档节点上获取data()
将返回节点的字符串值,但是返回xs:untypedAtomic
。作为一般规则,如果您需要字符串,请使用string()
而不是data()
。
有关所有详细信息,请参阅规范:http://www.w3.org/TR/xpath-functions/#func-data。
本节对typed-和string-data http://www.w3.org/TR/xpath-datamodel/#typed-string-relationships之间的区别有很好的解释。