data()和string()之间的区别

时间:2013-05-24 22:50:37

标签: xquery xquery-3.0

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() :)

1 个答案:

答案 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之间的区别有很好的解释。