我正在尝试将数据映射器调解器应用于 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>
XSLT 无法正确处理此 XML,无论是在 WSO2EI 中还是外部 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;任何建议将不胜感激。