WSO2数据服务和数据映射器

时间:2020-02-11 12:25:17

标签: namespaces wso2 mapper wso2ei qualified

我正在尝试将数据映射器介体应用于WSO2EI中定义的XML数据服务的输出。文档指出,要使用数据映射器,需要在XML输入文件中具有完全限定的名称。

我正在创建的数据服务在其生成的XML中不包含合格的前缀。 我试图从CAR文件中导出XSLT数据映射,并通过外部XML转换器将其与由数据服务生成的示例XML一起运行-它不起作用。但是,如果我在输入XML中手动添加了合格的前缀,则一切正常。

似乎我的数据映射器不起作用的原因是输入XML中的默认名称空间,而不是合格名称空间。不幸的是,我无法在其输出中获得包含名称空间前缀的数据服务。有什么想法吗?

为说明问题的性质,让我们考虑两个略有不同的输入。第一个XML输入文件使用默认名称,第二个使用限定名称:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <users xmlns="http://ws.wso2.org/dataservice">
         <user>
            <last>Waelchi</last>
            <first>Xzavier</first>
            <country>Swaziland</country>
         </user>
      </users>
   </soapenv:Body>
</soapenv:Envelope>

无论是在WSO2EI还是外部XML处理器中,XSLT都无法正确处理此XML。但是,具有限定名称的相同XML:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <users xmlns:p="http://ws.wso2.org/dataservice">
         <p:user>
            <p:last>Waelchi</p:last>
            <p:first>Xzavier</p:first>
            <p:country>Swaziland</p:country>
         </p:user>
      </users>
   </soapenv:Body>
</soapenv:Envelope>

至少由外部XML处理器正确解释。我的问题是,我无法使WSO2EI数据服务在其输出中包含合格的前缀。

好的,我设法绕过了使用XSLT转换将WSO2数据服务的XML输出转换为合格XML的问题。但是,我仍然无法直接从数据服务中获取合格的XML。任何建议都将不胜感激。

0 个答案:

没有答案