You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-user@ws.apache.org by Oliver Wulff <ol...@zurich.ch> on 2002/02/05 10:50:00 UTC

xsi type, NS_URI_CURRENT_SCHEMA_XSD

Hi

I need to communicate with the XMLBus from IONA. So, it's necessary to use
the XML Schema 2001. But the soap package use by default 1999. I've read in
the documentation guide\interop.html, that I can download the source code
and change the Constants.java:
      public static final String NS_URI_CURRENT_SCHEMA_XSI =
NS_URI_2001_SCHEMA_XSI;
      public static final String NS_URI_CURRENT_SCHEMA_XSD =
NS_URI_2001_SCHEMA_XSD;

But still, the old Schema will be used.

Then, I searched through the source code and found the following in
SOAPMappingRegistry.java:
      public String schemaURI = Constants.NS_URI_1999_SCHEMA_XSD;
      QName [] schemaQNames = schema1999QNames;

If it is hard coded, it will not work. After the following change, it
worked:
      public String schemaURI = Constants.NS_URI_CURRENT_SCHEMA_XSD;
      QName [] schemaQNames = null;

The only problem is, that there is still an attribute definition in the
Envelope element in the soap request message:
      <?xml version='1.0' encoding='UTF-8'?>
      <SOAP-ENV:Envelope xmlns:SOAP-ENV
="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi
="http://www.w3.org/1999/XMLSchema-instance"    xmlns:xsd
="http://www.w3.org/1999/XMLSchema">
      <SOAP-ENV:Body>
      <ns1:echoFloat xmlns:ns1="http://soapinterop.org/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <inputFloat xmlns:ns2="http://www.w3.org/2001/XMLSchema" xsi:type
="ns2:float">333.444</inputFloat>
      </ns1:echoFloat>
      </SOAP-ENV:Body>
      </SOAP-ENV:Envelope>


Did anybody have the same problem and found a better solution? Can I force
that the Schema 2001 will be used in the whole SOAP message?
Thanks

Oliver








******************* BITTE BEACHTEN *******************
Diese Nachricht (wie auch allfällige Anhänge dazu) beinhaltet
möglicherweise vertrauliche oder gesetzlich geschützte Daten oder
Informationen. Zum Empfang derselben ist (sind) ausschliesslich die
genannte(n) Person(en) bestimmt. Falls Sie diese Nachricht
irrtümlicherweise erreicht hat, sind Sie höflich gebeten, diese unter
Ausschluss jeder Reproduktion zu zerstören und die absendende Person
umgehend zu benachrichtigen. Vielen Dank für Ihre Hilfe.


Re: xsi type, NS_URI_CURRENT_SCHEMA_XSD

Posted by Raghavan Srinivasan <ra...@iplanet.com>.
Hi Oliver ,
             This  is not the answer to your question , but is a related 
change . I think you need to also change the QName array in 
Constants.java that contains schema mappings for various versions . 
QName schema2001QNames [] incorrectly uses timeInst2001QName 
(xsd:timeInstant) when it should be using dateTime .
Someone correctly me if i am wrong , but i saw this fix in a later 
release (later than 2.2) of  Constants.java  (Rev 1.21 and Rev 1.22) .

I saw this cause problems with some WSDL based clients(XSD 2001 
compliant)  who do  not know how to interpret a Soap message that 
contain xsd:timeInstant .

Also if someone has a comprehensive list of changes required to switch 
the Schema version on an install to 2001 , please post the list of 
changes here .

Thanks in advance ,
Raghavan


Oliver Wulff wrote:

>Hi
>
>I need to communicate with the XMLBus from IONA. So, it's necessary to use
>the XML Schema 2001. But the soap package use by default 1999. I've read in
>the documentation guide\interop.html, that I can download the source code
>and change the Constants.java:
>      public static final String NS_URI_CURRENT_SCHEMA_XSI =
>NS_URI_2001_SCHEMA_XSI;
>      public static final String NS_URI_CURRENT_SCHEMA_XSD =
>NS_URI_2001_SCHEMA_XSD;
>
>But still, the old Schema will be used.
>
>Then, I searched through the source code and found the following in
>SOAPMappingRegistry.java:
>      public String schemaURI = Constants.NS_URI_1999_SCHEMA_XSD;
>      QName [] schemaQNames = schema1999QNames;
>
>If it is hard coded, it will not work. After the following change, it
>worked:
>      public String schemaURI = Constants.NS_URI_CURRENT_SCHEMA_XSD;
>      QName [] schemaQNames = null;
>
>The only problem is, that there is still an attribute definition in the
>Envelope element in the soap request message:
>      <?xml version='1.0' encoding='UTF-8'?>
>      <SOAP-ENV:Envelope xmlns:SOAP-ENV
>="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi
>="http://www.w3.org/1999/XMLSchema-instance"    xmlns:xsd
>="http://www.w3.org/1999/XMLSchema">
>      <SOAP-ENV:Body>
>      <ns1:echoFloat xmlns:ns1="http://soapinterop.org/"
>SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>      <inputFloat xmlns:ns2="http://www.w3.org/2001/XMLSchema" xsi:type
>="ns2:float">333.444</inputFloat>
>      </ns1:echoFloat>
>      </SOAP-ENV:Body>
>      </SOAP-ENV:Envelope>
>
>
>Did anybody have the same problem and found a better solution? Can I force
>that the Schema 2001 will be used in the whole SOAP message?
>Thanks
>
>Oliver
>
>
>
>
>
>
>
>
>******************* BITTE BEACHTEN *******************
>Diese Nachricht (wie auch allfällige Anhänge dazu) beinhaltet
>möglicherweise vertrauliche oder gesetzlich geschützte Daten oder
>Informationen. Zum Empfang derselben ist (sind) ausschliesslich die
>genannte(n) Person(en) bestimmt. Falls Sie diese Nachricht
>irrtümlicherweise erreicht hat, sind Sie höflich gebeten, diese unter
>Ausschluss jeder Reproduktion zu zerstören und die absendende Person
>umgehend zu benachrichtigen. Vielen Dank für Ihre Hilfe.
>



Re: xsi type, NS_URI_CURRENT_SCHEMA_XSD

Posted by Raghavan Srinivasan <ra...@iplanet.com>.
Hi Oliver ,
             This  is not the answer to your question , but is a related 
change . I think you need to also change the QName array in 
Constants.java that contains schema mappings for various versions . 
QName schema2001QNames [] incorrectly uses timeInst2001QName 
(xsd:timeInstant) when it should be using dateTime .
Someone correctly me if i am wrong , but i saw this fix in a later 
release (later than 2.2) of  Constants.java  (Rev 1.21 and Rev 1.22) .

I saw this cause problems with some WSDL based clients(XSD 2001 
compliant)  who do  not know how to interpret a Soap message that 
contain xsd:timeInstant .

Also if someone has a comprehensive list of changes required to switch 
the Schema version on an install to 2001 , please post the list of 
changes here .

Thanks in advance ,
Raghavan


Oliver Wulff wrote:

>Hi
>
>I need to communicate with the XMLBus from IONA. So, it's necessary to use
>the XML Schema 2001. But the soap package use by default 1999. I've read in
>the documentation guide\interop.html, that I can download the source code
>and change the Constants.java:
>      public static final String NS_URI_CURRENT_SCHEMA_XSI =
>NS_URI_2001_SCHEMA_XSI;
>      public static final String NS_URI_CURRENT_SCHEMA_XSD =
>NS_URI_2001_SCHEMA_XSD;
>
>But still, the old Schema will be used.
>
>Then, I searched through the source code and found the following in
>SOAPMappingRegistry.java:
>      public String schemaURI = Constants.NS_URI_1999_SCHEMA_XSD;
>      QName [] schemaQNames = schema1999QNames;
>
>If it is hard coded, it will not work. After the following change, it
>worked:
>      public String schemaURI = Constants.NS_URI_CURRENT_SCHEMA_XSD;
>      QName [] schemaQNames = null;
>
>The only problem is, that there is still an attribute definition in the
>Envelope element in the soap request message:
>      <?xml version='1.0' encoding='UTF-8'?>
>      <SOAP-ENV:Envelope xmlns:SOAP-ENV
>="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi
>="http://www.w3.org/1999/XMLSchema-instance"    xmlns:xsd
>="http://www.w3.org/1999/XMLSchema">
>      <SOAP-ENV:Body>
>      <ns1:echoFloat xmlns:ns1="http://soapinterop.org/"
>SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>      <inputFloat xmlns:ns2="http://www.w3.org/2001/XMLSchema" xsi:type
>="ns2:float">333.444</inputFloat>
>      </ns1:echoFloat>
>      </SOAP-ENV:Body>
>      </SOAP-ENV:Envelope>
>
>
>Did anybody have the same problem and found a better solution? Can I force
>that the Schema 2001 will be used in the whole SOAP message?
>Thanks
>
>Oliver
>
>
>
>
>
>
>
>
>******************* BITTE BEACHTEN *******************
>Diese Nachricht (wie auch allfällige Anhänge dazu) beinhaltet
>möglicherweise vertrauliche oder gesetzlich geschützte Daten oder
>Informationen. Zum Empfang derselben ist (sind) ausschliesslich die
>genannte(n) Person(en) bestimmt. Falls Sie diese Nachricht
>irrtümlicherweise erreicht hat, sind Sie höflich gebeten, diese unter
>Ausschluss jeder Reproduktion zu zerstören und die absendende Person
>umgehend zu benachrichtigen. Vielen Dank für Ihre Hilfe.
>