0

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

4

0 回答 0