cancel
Showing results for 
Search instead for 
Did you mean: 

XML Namespace

silentbull
Participant
0 Kudos

Hello

I have an XSD loaded with namespace like the below.

wes:supplyAsn xmlns:wes="http://www.supply.com/docs/asn" xmlns:st="http://www.supply.com/docs/common/structures" xmlns:cm="http://www.supply.com/docs/common/components" schemaLocation="http://www.supply.com/docs/asn supply_palletBasedASN.xsd">

My scenario is from SOAP to AS2 which in both sides uses the same XSD.  When I receive any message from SOAP I get the header without the schemalocation details.

Even if the sender doesn't do it, my receiver structure which is same should have this while sending out to receiver.

Anything that i am missing here.

Regards

Krish

Accepted Solutions (0)

Answers (2)

Answers (2)

anupam_ghosh2
Active Contributor
0 Kudos

Hi Sam,

              You can add a java mapping in the OM to create the necessary namespace.

Can you please provide the xml payload you are getting and the one you intend to send.

Here is however a sample code to add the namespace

input

-----------

<?xml version="1.0" encoding="UTF-8"?>
<root>
</root>


output

---------

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="my.xsd">
</root>


code

--------

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = factory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element root = doc.createElement("root");
root
.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance",
  
"xsi:noNamespaceSchemaLocation", "my.xsd");
doc
.appendChild(root);
DOMImplementationLS dls = (DOMImplementationLS) doc.getImplementation();
System.out.println(dls.createLSSerializer().writeToString(doc));

Regards

Anupam

silentbull
Participant
0 Kudos

Hello

The namespace down there is part of XSD and comes as header which does not show in the message mapping.

wes:supplyAsn xmlns:wes="http://www.supply.com/docs/asn" xmlns:st="http://www.supply.com/docs/common/structures" xmlns:cm="http://www.supply.com/docs/common/components" schemaLocation="http://www.supply.com/docs/asn supply_palletBasedASN.xsd">


In the final output of file all of them comes except the schemaLocation="http://www.supply.com/docs/asn supply_palletBasedASN.xsd">.


Because the corresponding wsdl does not have this updated and when the sender sends it ignores this.


Can this be added in the PI mapping as xsl and if so how ?


Regards

Sam

anupam_ghosh2
Active Contributor
0 Kudos

Hi Sam,


let this be input xml



<?xml version="1.0" encoding="UTF-8"?>

<catalog xmlns:wes="http://www.supply.com/docs/asn">

  <cd>

  <title>Empire Burlesque</title>

  <artist>Bob Dylan</artist>

  <country>USA</country>

  <company>Columbia</company>

  <price>10.90</price>

  <year>1985</year>

  </cd>

  <cd>

  <title>Hide your heart</title>

  <artist>Bonnie Tyler</artist>

  <country>UK</country>

  <company>CBS Records</company>

  <price>9.90</price>

  <year>1988</year>

  </cd>

  <cd>

  <title>Greatest Hits</title>

  <artist>Dolly Parton</artist>

  <country>USA</country>

  <company>RCA</company>

  <price>9.90</price>

  <year>1982</year>

  </cd>

  <cd>

  <title>Still got the blues</title>

  <artist>Gary Moore</artist>

  <country>UK</country>

  <company>Virgin records</company>

  <price>10.20</price>

  <year>1990</year>

  </cd>

  <cd>

  <title>Eros</title>

  <artist>Eros Ramazzotti</artist>

  <country>EU</country>

  <company>BMG</company>

  <price>9.90</price>

  <year>1997</year>

  </cd>

  <cd>

  <title>One night only</title>

  <artist>Bee Gees</artist>

  <country>UK</country>

  <company>Polydor</company>

  <price>10.90</price>

  <year>1998</year>

  </cd>

  <cd>

  <title>Sylvias Mother</title>

  <artist>Dr.Hook</artist>

  <country>UK</country>

  <company>CBS</company>

  <price>8.10</price>

  <year>1973</year>

  </cd>

  <cd>

  <title>Maggie May</title>

  <artist>Rod Stewart</artist>

  <country>UK</country>

  <company>Pickwick</company>

  <price>8.50</price>

  <year>1990</year>

  </cd>

  <cd>

  <title>Romanza</title>

  <artist>Andrea Bocelli</artist>

  <country>EU</country>

  <company>Polydor</company>

  <price>10.80</price>

  <year>1996</year>

  </cd>

  <cd>

  <title>When a man loves a woman</title>

  <artist>Percy Sledge</artist>

  <country>USA</country>

  <company>Atlantic</company>

  <price>8.70</price>

  <year>1987</year>

  </cd>

  <cd>

  <title>Black angel</title>

  <artist>Savage Rose</artist>

  <country>EU</country>

  <company>Mega</company>

  <price>10.90</price>

  <year>1995</year>

  </cd>

  <cd>

  <title>1999 Grammy Nominees</title>

  <artist>Many</artist>

  <country>USA</country>

  <company>Grammy</company>

  <price>10.20</price>

  <year>1999</year>

  </cd>

  <cd>

  <title>For the good times</title>

  <artist>Kenny Rogers</artist>

  <country>UK</country>

  <company>Mucik Master</company>

  <price>8.70</price>

  <year>1995</year>

  </cd>

  <cd>

  <title>Big Willie style</title>

  <artist>Will Smith</artist>

  <country>USA</country>

  <company>Columbia</company>

  <price>9.90</price>

  <year>1997</year>

  </cd>

  <cd>

  <title>Tupelo Honey</title>

  <artist>Van Morrison</artist>

  <country>UK</country>

  <company>Polydor</company>

  <price>8.20</price>

  <year>1971</year>

  </cd>

  <cd>

  <title>Soulsville</title>

  <artist>Jorn Hoel</artist>

  <country>Norway</country>

  <company>WEA</company>

  <price>7.90</price>

  <year>1996</year>

  </cd>

  <cd>

  <title>The very best of</title>

  <artist>Cat Stevens</artist>

  <country>UK</country>

  <company>Island</company>

  <price>8.90</price>

  <year>1990</year>

  </cd>

  <cd>

  <title>Stop</title>

  <artist>Sam Brown</artist>

  <country>UK</country>

  <company>A and M</company>

  <price>8.90</price>

  <year>1988</year>

  </cd>

  <cd>

  <title>Bridge of Spies</title>

  <artist>T`Pau</artist>

  <country>UK</country>

  <company>Siren</company>

  <price>7.90</price>

  <year>1987</year>

  </cd>

  <cd>

  <title>Private Dancer</title>

  <artist>Tina Turner</artist>

  <country>UK</country>

  <company>Capitol</company>

  <price>8.90</price>

  <year>1983</year>

  </cd>

  <cd>

  <title>Midt om natten</title>

  <artist>Kim Larsen</artist>

  <country>EU</country>

  <company>Medley</company>

  <price>7.80</price>

  <year>1983</year>

  </cd>

  <cd>

  <title>Pavarotti Gala Concert</title>

  <artist>Luciano Pavarotti</artist>

  <country>UK</country>

  <company>DECCA</company>

  <price>9.90</price>

  <year>1991</year>

  </cd>

  <cd>

  <title>The dock of the bay</title>

  <artist>Otis Redding</artist>

  <country>USA</country>

  <company>Atlantic</company>

  <price>7.90</price>

  <year>1987</year>

  </cd>

  <cd>

  <title>Picture book</title>

  <artist>Simply Red</artist>

  <country>EU</country>

  <company>Elektra</company>

  <price>7.20</price>

  <year>1985</year>

  </cd>

  <cd>

  <title>Red</title>

  <artist>The Communards</artist>

  <country>UK</country>

  <company>London</company>

  <price>7.80</price>

  <year>1987</year>

  </cd>

  <cd>

  <title>Unchain my heart</title>

  <artist>Joe Cocker</artist>

  <country>USA</country>

  <company>EMI</company>

  <price>8.20</price>

  <year>1987</year>

  </cd>

</catalog>

             


The required xslt code to let the namespace of root element is shown below


<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="@*|node()">

        <xsl:copy>

            <xsl:apply-templates select="@*|node()"/>

        </xsl:copy>

    </xsl:template>

  <xsl:template match="/catalog">

        <catalog  xmlns:wes="http://www.supply.com/docs/asn" xmlns:st="http://www.supply.com/docs/common/structures" xmlns:cm="http://www.supply.com/docs/common/components" schemaLocation="http://www.supply.com/docs/asn supply_palletBasedASN.xsd">

            <xsl:apply-templates select="@*|node()"/>          

        </catalog>

    </xsl:template>

</xsl:stylesheet>

output xml

---------------


<?xml version="1.0" encoding="UTF-8"?>

<catalog xmlns:cm="http://www.supply.com/docs/common/components" xmlns:st="http://www.supply.com/docs/common/structures" xmlns:wes="http://www.supply.com/docs/asn" schemaLocation="http://www.supply.com/docs/asn supply_palletBasedASN.xsd">

   <cd>

      <title>Empire Burlesque</title>

      <artist>Bob Dylan</artist>

      <country>USA</country>

      <company>Columbia</company>

      <price>10.90</price>

      <year>1985</year>

   </cd>

   <cd>

      <title>Hide your heart</title>

      <artist>Bonnie Tyler</artist>

      <country>UK</country>

      <company>CBS Records</company>

      <price>9.90</price>

      <year>1988</year>

   </cd>

   <cd>

      <title>Greatest Hits</title>

      <artist>Dolly Parton</artist>

      <country>USA</country>

      <company>RCA</company>

      <price>9.90</price>

      <year>1982</year>

   </cd>

   <cd>

      <title>Still got the blues</title>

      <artist>Gary Moore</artist>

      <country>UK</country>

      <company>Virgin records</company>

      <price>10.20</price>

      <year>1990</year>

   </cd>

   <cd>

      <title>Eros</title>

      <artist>Eros Ramazzotti</artist>

      <country>EU</country>

      <company>BMG</company>

      <price>9.90</price>

      <year>1997</year>

   </cd>

   <cd>

      <title>One night only</title>

      <artist>Bee Gees</artist>

      <country>UK</country>

      <company>Polydor</company>

      <price>10.90</price>

      <year>1998</year>

   </cd>

   <cd>

      <title>Sylvias Mother</title>

      <artist>Dr.Hook</artist>

      <country>UK</country>

      <company>CBS</company>

      <price>8.10</price>

      <year>1973</year>

   </cd>

   <cd>

      <title>Maggie May</title>

      <artist>Rod Stewart</artist>

      <country>UK</country>

      <company>Pickwick</company>

      <price>8.50</price>

      <year>1990</year>

   </cd>

   <cd>

      <title>Romanza</title>

      <artist>Andrea Bocelli</artist>

      <country>EU</country>

      <company>Polydor</company>

      <price>10.80</price>

      <year>1996</year>

   </cd>

   <cd>

      <title>When a man loves a woman</title>

      <artist>Percy Sledge</artist>

      <country>USA</country>

      <company>Atlantic</company>

      <price>8.70</price>

      <year>1987</year>

   </cd>

   <cd>

      <title>Black angel</title>

      <artist>Savage Rose</artist>

      <country>EU</country>

      <company>Mega</company>

      <price>10.90</price>

      <year>1995</year>

   </cd>

   <cd>

      <title>1999 Grammy Nominees</title>

      <artist>Many</artist>

      <country>USA</country>

      <company>Grammy</company>

      <price>10.20</price>

      <year>1999</year>

   </cd>

   <cd>

      <title>For the good times</title>

      <artist>Kenny Rogers</artist>

      <country>UK</country>

      <company>Mucik Master</company>

      <price>8.70</price>

      <year>1995</year>

   </cd>

   <cd>

      <title>Big Willie style</title>

      <artist>Will Smith</artist>

      <country>USA</country>

      <company>Columbia</company>

      <price>9.90</price>

      <year>1997</year>

   </cd>

   <cd>

      <title>Tupelo Honey</title>

      <artist>Van Morrison</artist>

      <country>UK</country>

      <company>Polydor</company>

      <price>8.20</price>

      <year>1971</year>

   </cd>

   <cd>

      <title>Soulsville</title>

      <artist>Jorn Hoel</artist>

      <country>Norway</country>

      <company>WEA</company>

      <price>7.90</price>

      <year>1996</year>

   </cd>

   <cd>

      <title>The very best of</title>

      <artist>Cat Stevens</artist>

      <country>UK</country>

      <company>Island</company>

      <price>8.90</price>

      <year>1990</year>

   </cd>

   <cd>

      <title>Stop</title>

      <artist>Sam Brown</artist>

      <country>UK</country>

      <company>A and M</company>

      <price>8.90</price>

      <year>1988</year>

   </cd>

   <cd>

      <title>Bridge of Spies</title>

      <artist>T`Pau</artist>

      <country>UK</country>

      <company>Siren</company>

      <price>7.90</price>

      <year>1987</year>

   </cd>

   <cd>

      <title>Private Dancer</title>

      <artist>Tina Turner</artist>

      <country>UK</country>

      <company>Capitol</company>

      <price>8.90</price>

      <year>1983</year>

   </cd>

   <cd>

      <title>Midt om natten</title>

      <artist>Kim Larsen</artist>

      <country>EU</country>

      <company>Medley</company>

      <price>7.80</price>

      <year>1983</year>

   </cd>

   <cd>

      <title>Pavarotti Gala Concert</title>

      <artist>Luciano Pavarotti</artist>

      <country>UK</country>

      <company>DECCA</company>

      <price>9.90</price>

      <year>1991</year>

   </cd>

   <cd>

      <title>The dock of the bay</title>

      <artist>Otis Redding</artist>

      <country>USA</country>

      <company>Atlantic</company>

      <price>7.90</price>

      <year>1987</year>

   </cd>

   <cd>

      <title>Picture book</title>

      <artist>Simply Red</artist>

      <country>EU</country>

      <company>Elektra</company>

      <price>7.20</price>

      <year>1985</year>

   </cd>

   <cd>

      <title>Red</title>

      <artist>The Communards</artist>

      <country>UK</country>

      <company>London</company>

      <price>7.80</price>

      <year>1987</year>

   </cd>

   <cd>

      <title>Unchain my heart</title>

      <artist>Joe Cocker</artist>

      <country>USA</country>

      <company>EMI</company>

      <price>8.20</price>

      <year>1987</year>

   </cd>

</catalog>

Hope this resolves your problem.

Regards

Anupam

Former Member
0 Kudos

Hi,

Simply use XSLT as a the second step in your OM to add any missing namespace.

Thanks

Amit Srivastava