놀랍게도, 아주 기본적인 XQuery 질문, 즉 주요 XQuery 모듈과 가져온 라이브러리 모듈간에 전역 변수를 공유하는 올바른 방법은 무엇입니까? 간단히 말해 전역 변수를 어디에서나 (즉, (가져온) 모든 XQuery 모듈에서) 재사용 할 수있는 어딘가에 정의하고 싶습니다. 그런 변수를 선언하기 가장 좋은 곳을 찾기 위해 고심하고 있습니다.XQuery : (가져온) 모듈에서 전역 변수 공유
global.xq :
module namespace global="global"; declare variable $global:test := 'global!';
TEST2 라이브러리 모듈 다음
import module namespace global="global" at "global.xq"; import module namespace test2="test2" at "test2.xq"; declare variable $test := 'test!'; test2:echo()
이 모듈 수입 :
가정하자 나는 주요 XQuery를 (test.xq를) 다음 한 .xq : 모듈 네임 스페이스 test2 = "test2";
import module namespace global="global" at "global.xq"; declare function test2:echo() { $global:test };
이 작동하지만 몇 가지 질문으로 나를 잎 :
그것을 할 수있는 방법이 있나요 :
- 하는 글로벌 변수를 정의 (예 : $ 글로벌 : 테스트를) 별도의 라이브러리 모듈 (예 : global.xq)
- 모듈을 가져올 필요가있는 곳으로 가져 오기 변수에 대한 액세스
?
- 가져온 라이브러리 모듈 (예 : test2.xq)에서 기본 XQuery 모듈 (예 : $ test)에 선언 된 변수에 액세스하는 방법이 있습니까?
누구든지이 문제에 관해 밝힐 수 있습니까? 나는 내가 왜이 개념과 맞서 싸우고있는 주된 이유가 무엇인지는 짐작한다. 왜냐하면 나는 어쩌면 그것보다 느슨한 eXist의 행동에 익숙하기 때문이다. global.xq 모듈 가져 오지 않고 테스트 변수 : 존재에서 test2.xq 모듈은 단지 $ 글로벌 참조 할 수 있습니다이 존재에서 작동하기 때문에
module namespace test2="test2";
declare namespace global="global";
declare function test2:echo() {
$global:test
};
을하지만 색슨에, 나는 무엇인지 궁금 시작 (가져온) XQuery 모듈에서 전역 변수를 정의하고 사용하는 올바른 방법.
종류와 관련,
론
의견을 보내 주셔서 감사합니다. 나는 비표준 행동에 근거한 가정에 부딪쳤을지도 모른다는 것을 잘 알고있다. 그러나 그러한 디자인 패턴과 관련하여 웹에서 유용한 힌트를 찾을 수 없었습니다. 나는 그런 기본적인 필요를위한 공급자 특정 확장을 좋아하지 않는다. 전역 변수를 모든 (가져 오기) XQuery 모듈에 액세스 가능하게하는 표준 방법으로 원래의 질문 (예 : 전용 라이브러리 모듈에서 전역 변수를 정의하고 필요에 따라 가져 오기)에서 작업 방식을 권장 하시겠습니까? 아니면 다른 (준수) 가능성을 보시겠습니까? – rvdb
@rvdb 각 호출에 매개 변수를 통해 이러한 값을 전달하는 것이 좋습니다. 아주 작은 컨텍스트 정보를 작은 XML 조각으로 모으고이를 전달하는 것은 매우 쉽습니다. 그것은 가장 확장 성이 뛰어나며 가장 깨끗합니다. 내가 설명한 행동의 초기화 종류를 원할 이유가 없다면, 당신이했던 것처럼 공유 전역 모듈을 가져 오는 것이 가장 현명한 다른 방법입니다. HTH! – grtjn