我正在尝试将数据映射器介体应用于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。任何建议都将不胜感激。