저는 XQuery에 대해 읽고 테스트 도구와 같이 BaseX (www.basex.org)와 saxon-HE 9.4.0.6N을 사용합니다. 다음과 같은 간단한 XML 파일의 경우 - sample.xml에 붙어 있던 스키마idref를 사용하는 XPath 표현
Basex_GUI 나는 다음과 같은 XPath 식을 입력 할 경우에<rootab>
<l1>
<items p="a">
<itema x1="10" id="abc">testa</itema>
<itemb x1="10" id="dfe">testb</itemb>
<itemc x1="10" id="jgh">testc</itemc>
</items>
</l1>
<l2>
<items p="b">
<itema x1="10" xidref="abc">testa</itema>
<itemc x1="10" xidref="jgh">testc</itemc>
<itemd x1="10" xidref="abc">testA101</itemd>
<iteme x1="10" xidref="jgh">testB202</iteme>
</items>
</l2>
</rootab>
: //idref("abc")/..
결과는 다음과 같습니다 BaseX_GUI에서 <itema x1="10" xidref="abc">testa</itema>
내가 추가하는 경우를 간단한 XQuery 표현식은 :
for $x in doc('sample.xml')//idref("abc")/..
return <aaa>{$x}</aaa>
결과는 다음
01,q1) 왜 XPath식이 하나의 노드 만 반환 했습니까? 나는 아래 XQL 파일을 사용하여, 두 ... 색슨에서
예상 :
<?xml version="1.0" encoding="UTF-8"?><test/>
:
<test>
{
doc('sample.xml')//idref("abc")/..
}
</test>
또는 XQuery 표현식을, 나는 명령 query sample.xql
을 실행하여 동일한 결과를받을 q2) 색슨 테스트에서 무엇이 잘못 되었습니까?
귀하의 도움에 미리 감사드립니다.
DTD가 없습니다 ... 책에서 일부 장을 읽은 후에 sample.xml이 작성되었습니다. – dag
DTD가없고 스키마가없는 경우 시스템은 IDREF 속성 인 속성을 알 수 없기 때문에 idref() 함수는 아무 것도 반환하지 않습니다. –
내 자신의 DTD를 작성하는 경우 Saxon과 함께 명령 줄에서 내부 DTD 또는 외부 참조를 사용할 수 있습니까? (예 : query -useDTD : x sample.xql). 하지만 프로그래밍 방식으로 .Net에서? DTD 파일은 내가 필요로하는 것, 즉 IDREF 타입과 같이 선언 될 수있는 속성들만을 가지고 있다고 가정한다. 고마워요! – dag