我对 XSLT 很陌生。 基本上,我需要通过添加一行以及中间的一些命名空间来更新传入的soap xml。您能建议一个 XSL 帮我做这件事吗? 另一个问题是,我应该将 XSL 文件放置在哪里才能对所有传入请求采取操作?
Incoming Requests:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<consultaRegistros>
<id>231</id>
<numero>1231</numero>
<registros_alta>
......
</registros_alta>
</consultaRegistros>
</soapenv:Body>
</soapenv:Envelope>
To be transformed to:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:les="LEServico">
<soapenv:Header/>
<soapenv:Body>
<les:consultaRegistrosReq>
<consultaRegistros>
<id>231</id>
<numero>1231</numero>
<registros>
......
</registros>
</consultaRegistros>
</les:consultaRegistrosReq>
</soapenv:Body>
</soapenv:Envelope>
最佳答案
你可以改变它:
<consultaRegistros>
<id>231</id>
<numero>1231</numero>
<registros_alta>
......
</registros_alta>
</consultaRegistros>
对此:
<les:consultaRegistrosReq xmlns:les="LEServico">
<consultaRegistros>
<id>231</id>
<numero>1231</numero>
<registros>
......
</registros>
</consultaRegistros>
</les:consultaRegistrosReq>
使用模板规则:
<xsl:template match="consultaRegostros">
<les:consultaRegistrosReq xmlns:les="LEServico">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</les:consultaRegistrosReq>
</xsl:template>
<xsl:template match="registros_alta">
<registros>
<xsl:apply-templates/>
</registros>
</xsl:template>
加上标准的身份规则来复制其他元素不变。
请注意,这不会像示例中那样将命名空间声明放在最外层元素上,但结果是等效的。
我不会建议您如何设置配置来应用此转换,因为我对您的处理环境了解不够。
关于java - 用于向soap xml 添加一个新标签的 XSL 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46687814/