2017-03-21 8 views
0

에서 XQuery에 엔진을 사용하여 BEA 기능은 내가하지만, 아주 많이이 문제를 가진 사람들의 해결책을 발견하지 않았습니다 내 XQuery를 XQueryExecutable exec = compiler.compile(...));를 컴파일 할 때 나는이 오류 그러나OSB FN :</p> <p>내가 사용하는 Java 응용 프로그램에서 XQuery를 변환 할 노력하고 있어요 : 몇 가지 조사 후 자바

net.sf.saxon.s9api 

: 정적이 접두사를 포함하거나 무엇을 오전에

Error on line 13 column 3 of AivPumaRequest.xquery: 
    XPST0081 XQuery static error near #... fn-bea:inlinedXML(fn:concat#: 
    Prefix fn-bea has not been declared 
Error on line 44 column 102 of AivPumaRequest.xquery: 
    XPST0081 XQuery static error near #... div xdt:dayTimeDuration('P1D'#: 
    Prefix xdt has not been declared 
Error on line 199 column 3 of AivPumaRequest.xquery: 
    XPST0081 XQuery static error near #... fn-bea:inlinedXML(fn:concat#: 
    Prefix fn-bea has not been declared 
Error on line 282 column 4 of AivPumaRequest.xquery: 
    XPST0081 XQuery static error near #... {fn-bea:inlinedXML(fn:concat#: 
    Prefix fn-bea has not been declared 

net.sf.saxon.s9api.SaxonApiException: Prefix fn-bea has not been declared 

방법이 있나요 내 XQuery Engine (SAXON)이 접두사를 찾지 못해서 빠졌습니까?

답변

1

귀하의 질문에 간단한 대답은 하나

XQueryCompiler.declareNamespace("fn-bea", "http://some-appropriate-uri") 

를 사용

declare namespace fn-bea = "http://some-appropriate-uri"; 

또는 색슨 API에를 사용하여 쿼리 프롤로그에서 네임 스페이스 접두사를 선언 할 수 있습니다하지만 당신을 얻을 것입니다 (a) 접두어를 바인딩 할 URI를 알지 못하면 (b) 쿼리 프로세서에서이 이름을 가진 함수를 사용할 수 없게됩니다.

xdt : dayTimeDuration에 대한 참조는 XQuery가 여전히 작동 초안 일 때이 쿼리가 작성되었음을 나타냅니다. 당신은 예를

https://www.w3.org/TR/2005/CR-xquery-20051103/ 

를 들어, 2005 년 작업 초안을 보면이 내장 된 시간 XQuery를 1.0으로 접두사

xdt = http://www.w3.org/2005/xpath-datatypes 

된 추천을 사용하는 당신은, 섹션 2에서 볼거야 dayTimeDuration 데이터 유형이 표준 XML 스키마 (xs) 네임 스페이스로 이동되었으므로 "xd"를 "xs"로 간단히 바꿀 수 있습니다. 언어의 의미가 사소한 세부 사항에서도 변경되었을 가능성이 있음을 알아야합니다.

fn-bea:inlinedXML의 경우 접두어를 선택하면 Oracle에 의해 인수 된 BEA 쿼리 프로세서의 기본 제공 업체 확장 프로그램 일 가능성이 있음을 알 수 있습니다. 여기 사양 :

https://docs.oracle.com/cd/E13162_01/odsi/docs10gr3/xquery/extensions.html 

는 말한다 :

FN-BEA : inlinedXML은 텍스트 XML을 구문 분석하고 는 XQuery 1.0 데이터 모델의 인스턴스를 반환합니다.

이 함수는 XQuery 3.0 함수 fn:parse-xml()과 매우 유사한 작업을 수행하며,이 쿼리를 바꾸는 것이 좋습니다.