2013-05-24 3 views
1

Xquery의 data() 함수와 string() 함수의 실제 차이점은 무엇입니까? 그들이 그것을 사용할 때 둘 다 같은 결과를 반환하는 것 같습니다. 다른 사람이 어떻게 다른지에 대한 간단한 예를 들어 줄 수 있습니까? data()은 "입력 값"을 반환하는 반면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() :) 

답변

5

string()는 항상 문자열을 반환합니다. 대부분이 시간은 xs:string입니다. 그러나 xs:untypedAtomic 또는 다른 원자 유형 (일반적으로 스키마에 정의 됨) 일 수도 있습니다.

일부 직관적 인 경우도 있습니다. 예를 들어, 문서 노드에서 data()을 가져 오면 노드의 문자열 값이 반환되지만 xs:untypedAtomic으로 반환됩니다. 일반적으로 문자열을 원하면 string()이 아닌 data()을 사용하십시오.

자세한 내용은 http://www.w3.org/TR/xpath-functions/#func-data 사양을 참조하십시오.

이 절에서는 입력 된 데이터와 문자열 데이터 http://www.w3.org/TR/xpath-datamodel/#typed-string-relationships의 차이점에 대해 아주 잘 설명합니다.

+2

이 토론 - http://developer.marklogic.com/blog/text-is-a-code-smell#comment-407618423도 참조하십시오. 전체 기사는 text()에 대해 확실하지 않은 경우 유용합니다. – joewiz

관련 문제