3

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

1 回答 1

7

string()将始终返回一个字符串,而data()返回“键入的值”。大多数情况下,这将是xs:string;但是,它也可以是xs:untypedAtomic或任何其他原子类型(通常在模式中定义)。

也有一些不直观的情况。例如,进入data()一个文档节点将返回该节点的字符串值,但作为xs:untypedAtomic. 作为一般规则,如果您想要一个字符串,请使用string()not data()

有关所有详细信息,请参阅规范:http: //www.w3.org/TR/xpath-functions/#func-data

本节很好地解释了类型数据和字符串数据http://www.w3.org/TR/xpath-datamodel/#typed-string-relationships之间的区别。

于 2013-05-24T23:30:50.763 回答