Weblogic OSB-从另一个XQuery文件调用函数
在Weblogic Service Bus 10g中,我有一个XQuery文件,其中包含一个函数,我希望从另一个XQuery文件的函数中使用该函数。如何在OSB中实现这一点 Projects/projectA/getMessageType XQuery:Weblogic OSB-从另一个XQuery文件调用函数,weblogic,xquery,osb,Weblogic,Xquery,Osb,在Weblogic Service Bus 10g中,我有一个XQuery文件,其中包含一个函数,我希望从另一个XQuery文件的函数中使用该函数。如何在OSB中实现这一点 Projects/projectA/getMessageType XQuery: declare namespace xf = "http://tempuri.org/projectA/getMessageType/"; declare function xf:getMessageType($anyType as elem
declare namespace xf = "http://tempuri.org/projectA/getMessageType/";
declare function xf:getMessageType($anyType as element())
as xs:string {
...
};
declare variable $anyType as element() external;
xf:getMessageType($anyType)
import module namespace common = "http://your.site.com/common";
declare namespace xf = "http://tempuri.org/projectA/getMessageType/";
declare variable $anyType as element() external;
common:getMessageType($anyType)
项目/项目B/流程XQuery:
declare namespace xf = "http://tempuri.org/projectB/process/";
declare function xf:process($data as element())
as element() {
// call projectA's getMessageType($data) here!!!
...
};
import module namespace common = "http://your.site.com/common";
declare namespace xf = "http://tempuri.org/projectB/process/";
declare function xf:process($data as element())
as element() {
common:getMessageType(data)
...
};
提前感谢,,
PM您需要将
xf:getMessageType
函数从projectA
播放到库模块中,而不是主模块中。然后可以导入库模块
考虑以下情况:
Projects/projectA/getMessageType XQuery:
declare namespace xf = "http://tempuri.org/projectA/getMessageType/";
declare function xf:getMessageType($anyType as element())
as xs:string {
...
};
declare variable $anyType as element() external;
xf:getMessageType($anyType)
import module namespace common = "http://your.site.com/common";
declare namespace xf = "http://tempuri.org/projectA/getMessageType/";
declare variable $anyType as element() external;
common:getMessageType($anyType)
项目/项目B/流程XQuery:
declare namespace xf = "http://tempuri.org/projectB/process/";
declare function xf:process($data as element())
as element() {
// call projectA's getMessageType($data) here!!!
...
};
import module namespace common = "http://your.site.com/common";
declare namespace xf = "http://tempuri.org/projectB/process/";
declare function xf:process($data as element())
as element() {
common:getMessageType(data)
...
};
项目/common/common.xqy
module namespace common = "http://your.site.com/common";
declare function common:getMessageType($anyType as element())
as xs:string {
...
};
您可能需要将
at
语句添加到import module
语句中,指定公共库模块的文件位置,但我不确定这在WebLogic OSB中会是什么样子。嗨,Adam,谢谢您的回答。您完全正确,将函数放入库模块就可以实现这一点。我只是想知道是否有可能直接导入另一个XQuery文件的功能,因为这是一个系统中的小更新要求,该系统目前仅处于维护模式,正在逐步淘汰(因此不需要创建模块并更新每个流来使用它)。恐怕不行,XQuery规范规定只能从库模块
导入函数,不能从主模块
导入函数。