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 に答える