无法使用XSLT正确添加命名空间

时间:2012-03-15 15:38:16

标签: xslt bpel

我遇到了一个问题。

下面的XML是使用Oracle BPEL流程生成的

 <gdspCreateVpnNumberList xmlns:ws="http://ws.abc.com/" xmlns="http://ws.abc.com/">
                <ws:numberListName>SampleList105</ws:numberListName>
                <ws:numberListDesc>Desc</ws:numberListDesc>
                <ws:selectedCustomerId>200</ws:selectedCustomerId>
                <ws:numbersList>
                    <ws:number>21</ws:number>
                </ws:numbersList>
            </gdspCreateVpnNumberList>

我已在xslt下方应用以达到上述所需输入:

<xsl:stylesheet version="1.0" 
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
 xmlns:ws="http://ws.abc.com/"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="*">
  <xsl:element name="ws:{local-name(.)}"
       namespace="http://ws.abc.com/">
    <xsl:apply-templates />
  </xsl:element>
 </xsl:template>

</xsl:stylesheet> 

但是,我无法生成我需要的实际请求:

<ws:gdspCreateVpnNumberList xmlns:ws="http://ws.abc.com/">
    <numberListName>SampleList105</ws:numberListName>
    <numberListDesc>Desc</ws:numberListDesc>
    <selectedCustomerId>200</ws:selectedCustomerId>
    <numbersList>
    <number>21</ws:number>
   </numbersList>
</ws:gdspCreateVpnNumberList>

输出:

        <gdspCreateVpnNumberListResponse xmlns:msgns="http://ws.abc.com/" xmlns="http://ws.abc.com/">
            <return xmlns="">
                <returnCode>
                    <majorReturnCode>100</majorReturnCode>
                    <minorReturnCode>7042</minorReturnCode>
                </returnCode>
            </return>
        </gdspCreateVpnNumberListResponse>

真的很感谢你对此的帮助......

此致 ANKIT

1 个答案:

答案 0 :(得分:0)

您请求的输出对于所有元素看起来都很奇怪,除了第一个在非命名空间中,但这会生成:

结果:

<ws:gdspCreateVpnNumberList xmlns:ws="http://ws.abc.com/">
   <numberListName>SampleList105</numberListName>
   <numberListDesc>Desc</numberListDesc>
   <selectedCustomerId>200</selectedCustomerId>
   <numbersList>
      <number>21</number>
   </numbersList>
</ws:gdspCreateVpnNumberList>

的xsl:

<xsl:stylesheet version="1.0" 
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
 xmlns:ws="http://ws.abc.com/"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/*">
 <xsl:element name="ws:{local-name(.)}"
          namespace="http://ws.abc.com/">
  <xsl:apply-templates />
 </xsl:element>
</xsl:template>
<xsl:template match="*">
 <xsl:element name="{local-name(.)}">
  <xsl:apply-templates />
 </xsl:element>
</xsl:template>

</xsl:stylesheet>