XQuery 作为xml数据转换引擎的软肋

当前很多的xml数据转换框架运行在XQuery引擎上,尤其是主流的SOA厂商产品,如oracle ESB等。

 

先不提performance问题,就功能范围来讲,XQuery确实提供了丰富的数据转换函数,并允许提供自定义转换函数,能够支持非常复杂的xml结构的转换(当然,这种复杂度实际上应当在进行数据模型架构设计时由架构师尽量避免)。

 

但个人认为,XQuery是一种中立的与编程语言无关的纯粹的面向xml的查询&转换语言,其应用场景定位于纯粹的xml语境中,其语言的操作范围仅限于XQuery运行时定义在XQuery语境中的内容,包括xml节点,变量,自定义函数等。

 

这种设计方法从一开始就避开了现实的业务需求语境,考虑的应用场景并不全面。XQuery是一种运行环境比较封闭,语法功能相对比较弱的语言,并未提供与当前程序运行环境相对接的规范,比如在XQueuy中调用java的自定义方法,这就对比较复杂业务的转换提供了一点障碍,需要进行二次转换才能完成整个转换场景。比如在xml转换过程中,需要对productID进行转换,转换成另外一个系统的product编码,通常是提供一个二维关系表来建立两种编码的mapping关系,转换过程中通过lookup方法,查找出目标系统编码。对此类需求,XQuery就不能很好的满足,因为将这种编码mapping关系配置在XQuery中显然是太合理的。

 

不清楚未来XQuery会不会在规范中增加调用(有点像callback的方法)运行环境的语法规范,但个人认为XQuery作为企业应用集成的转换框架,并不能提供完整的解决方案,如果进行二次转换,势必对性能产生影响。

 

注:有观点认为,包含业务信息的转换应当放在Adapter组件中,而不应该在服务总线上,此处本文并不针对架构方法进行讨论,仅就XQuery的功能进行讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值