Tibco XML Schema 的命名空间使用备忘

         在Tibco 中, 用XML 格式传输信息是很常见的,  如我们提供一个webservice wsA给别人调用,  wsA 的方法wsAF 的输入引用了 一个XML Schema ProjectBox, 这个wsAF 被调用后, 我们用SOAPEventSource 组件取得对方输入的信息, 提供给其他组件, 如: $SOAPEventSource/inputMessage/ns1:ProjectBox/ns1:Project_id.

        上面这段字符串, 让其他组件可以获得当前输入的Project_id ,  $SOAPEventSource/inputMessage/ns1:ProjectBox/ns1:Project_id.

        在我定义的ProjectBox 的Schema 里面, 我是没有定义 ns1 的信息的, 这个是tibco 帮我生成的, 当我把wsAF 的输入引用改为其他的Schema ProjectBox2 的时候, 我发现SOAPEventSource 组件提供给其他组件的字符串是: $SOAPEventSource/inputMessage/ns5:ProjectBox/ns5:Project_id.

        在我已经把 SOAPEventSource 的输入信息给到很多组件的时候, 我修改了 wsAF 的输入引用的Schema 修改了, 那我就修改很多地方了, 这显然不是我所希望的, 有什么解决办法吗?

       我猜想ns1 ,ns5 这些的生成跟命名空间应该有直接的关系, 当时Tibco 里面的东西很多跟命名空间有关, 在经过了一系列的探索, 测试和排除后, 终于定位到了ProjectBox2 的 Schema (Tibco 的Schema 编辑真心不好用),  

       重点在于ProjectBox2 Schema 的 targetNamespace, 我把这个targetNamespace 改为和 ProjectBox Schema 一样, 把wsAf 的输入重新引用为修改了targetNamespace 的ProjectBox2 (这一步必须的, 修改了targetNamespace 后, 原引用关系已经失效), 测试了一下, $SOAPEventSource/inputMessage/ns1:ProjectBox/ns1:Project_id 可行, 并且也不会跟ProjectBox 冲突(还没试过放在同一个流程下面是否会冲突, 不同的流程是确定不会冲突了), 算是比较完满的解决了这个问题. 


        Tibco 自动生成的ns1, ns2, pfx1, pfx2 这些随机值, 跟引用的XML Schema 的属性 targetNamespace 有直接的关系. 对于 targetNamespace 和 xmlns 的区别也明确了一些, 一个对外使用, 一个对内使用, 简单来说就是这样了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值