MS SQL Server에서 XQuery를 사용하여 특정 텍스트 요소를 포함하는 단락 다음에 오는 테이블의 텍스트 요소를 가져 오려고합니다. 문제는 "following-sibling"또는 "previous-sibling"축 "following"을 사용할 때마다 SQL Server에서 지원되지 않는다는 오류가 발생합니다 (버전 2008 사용).축 "추종"이 지원되지 않는 경우 XPath에서 다음 형제 얻기
//w:p[descendant::w:t = "blah"]
내가 사용하여 테이블 요소의 텍스트를 얻을 수 있습니다 :
//w:tbl//w:t/text()
I을 그래서 예를 들면, 나는 값 "어쩌구"인 텍스트 노드를 포함하는 첫 번째 단락 노드를 얻을 수 있습니다 단지 이후 이전에 캡처 단락 노드를 다음 첫 번째 테이블 요소 반환에 내가 쿼리를 강제 할 수있는 방법이 표시되지 않는 :
//w:tbl[following:://w:p//w:t = "blah"]//w:t/text()
하면 오류를 제공합니다 : "XQuery를 [Specification.document.query()] : XQ uery 구문 'following'은 지원되지 않습니다. "
그리고 대해 동일한 :
//w:tbl[following-sibling::w:p[descendant::w:t = "blah"]]//w:t/text()
준다 "XQuery를 [Specification.document.query는() ''- 다음 형제 'XQuery에 구문을 지원하지 않습니다.'
그건 옳지 않습니다. XPath는 1999 년 AFAICT 1.0 이후로 다음과 같은 형제를 지원했습니다. 그래서 MS SQL Server는 표준 컴플라이언스 측면에서 심각한 결함이있는 것으로 보이지만 어느 것이 든 그 축없이이 작업을 수행 할 수있는 방법을 볼 수 있습니까? 미리 감사드립니다!
당신은 XML을 게시 할 수 있습니까? – Jagd
당신의 표현식 : // w : tbl [following :: // w : p // w : t = "blah"] // w : t/text()'는 구문 적으로 합법적 인 XPAth 표현식이 아닙니다. 이것은 "따르기"와는 아무런 관련이 없습니다. –
어떨까요 : 'w : tbl [선행 형제 : : w : p] [자손 :: w : t = "어쩌구 저주]] // w :/텍스트()' 나는 그것이 유효하다는 것을 알고있다. .NET Framework에서 작동하기 때문입니다. 그러나 SQL Server에는 없습니다. SQL Server는 XPath 비준수입니다. – TimeHorse