XSL转换后更改了肥皂标头

时间:2019-01-17 07:23:09

标签: xml xslt soap xslt-1.0

我一直在尝试使用XSL文件生成XML。但是以某种方式,SOAP标头标记被另一个标记所覆盖。

我的XSL文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <xsl:output method="xml" omit-xml-declaration="no" encoding="utf-8"
        indent="yes" />
    <xsl:template match="/">
        <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
            <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
            <!-- SOME DATA -->
            </SOAP-ENV:Header>
            <soap:Body>
            <!-- SOME DATA -->
            </soap:Body>
        </soap:Envelope>
    </xsl:template>

</xsl:stylesheet>

输出XML生成为:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Header>
<!--SOME DATA-->
  </soap:Header>
   <soap:Body>
<!--SOME DATA-->
</soap:Body>
</soap:Envelope>  

我希望它看起来像:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<!--SOME DATA-->
  </SOAP-ENV:Header>
   <soap:Body>
<!--SOME DATA-->
</soap:Body>
</soap:Envelope>  

有人可以帮我解决这个问题吗? 预先感谢。

1 个答案:

答案 0 :(得分:1)

您的soap en SOAP-ENV名称空间是相同的,因此唯一更改的是删除了第二个前缀。本质上,您的消息是相同的,前缀只是名称空间的占位符,并且同一名称空间不需要两个前缀。

基本上,第二个前缀是不必要的,并由转换器删除。