Hi, If xmlns:xsi is declared for saml:Assertion element then it should be serialized - otherwise you have loss of information and that is big issue when namespace prefixes are used inside attribute values (or element values as well)
Not including in-scope namespaces in serialization of detached element will be also a problem ... my 2c, Alek On Mon, Nov 21, 2011 at 11:59 AM, Andreas Veithen <[email protected] > wrote: > On Mon, Nov 21, 2011 at 17:18, Aleksander Slominski > <[email protected]> wrote: > > Hi, > > from what I remember of XML and Namespaces: when you detach any child > > element such as saml:Assertion then all in-scope namespace declared > prefixes > > should be copied. > > There is no spec that defines a general rule for this. Specs such as > XML C14N define specific rules for this applicable in specific > contexts. > > > The serializer should recognize if it is serializing a standalone or > > embedded XML. Is there any API for it? For standalone it should print all > > in-scope declared namesapce prefixes. > > What the serializer does is to generate additional namespace > declarations if it encounters information items (elements or > attributes) that have a prefix/namespace URI combination for which no > namespace declaration is in scope. That covers the case of serializing > a part of an XML document. This in general gives the expected result, > except for cases where a namespace declaration is not visibly used, > e.g. in an attribute value. BTW, it's the same behavior as in DOM. > > Anyway, this is not a relevant question because it is not related to > the problem. > > > HTH, > > Alek > > > > On Sun, Nov 20, 2011 at 11:31 PM, Charith Wickramarachchi > > <[email protected]> wrote: > >> > >> Hi , > >> > >> Looked more in to the details of whats happening. So here the problem is > >> the element that have this redundant names space is the <saml:Assertion > ... > >> element which is a signed one. > >> > >> > >> The incoming message to synapse looks like this. > >> > >> <soapenv:Envelope > >> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > >> xmlns:oas=" > http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd > " > >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> > >> <soapenv:Header> > >> <oas:Security> > >> <saml:Assertion .... > >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> ... > >> </saml:Assertion> > >> </oas:Security> > >> </soapenv:Header> > >> ........................... > >> </soapenv:Envelope> > >> > >> > >> and output is like > >> > >> <soapenv:Envelope > >> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > >> xmlns:oas=" > http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd > " > >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> > >> <soapenv:Header> > >> <oas:Security> > >> <saml:Assertion ...> ... </saml:Assertion> > >> </oas:Security> > >> </soapenv:Header> > >> > >> > >> So in this case isn't it wrong to do this kind of optimizations ? > >> > >> thanks, > >> Charith > >> > >> > >> > >> > >> > >> On Mon, Nov 21, 2011 at 8:50 AM, Charith Wickramarachchi > >> <[email protected]> wrote: > >>> > >>> Hi , > >>> > >>> This is an issue with the BE service. When the message comes to synapse > >>> from the client. In its SOAP Message it has same name space declared > at two > >>> levels. > >>> > >>> At Envelope level and and inside a header. So as a result when message > go > >>> through synapse it will omit this redundant names space declaration. > >>> But BE service will fail to process this header due to missing > >>> namesspace. So its due to BEs xml phaser assumes that headers are self > >>> contained and they do not see the namesspace defined at Envelope level. > >>> > >>> thanks, > >>> Charith > >>> > >>> On Sun, Nov 20, 2011 at 11:12 PM, Sanjiva Weerawarana > >>> <[email protected]> wrote: > >>>> > >>>> "So when synapse forward them to the BE service they get omitted as > >>>> they are defined at SOAP Envelope level." > >>>> Maybe Synapse is not serializing the headers properly? > >>>> Sanjiva. > >>>> > >>>> On Sun, Nov 20, 2011 at 10:55 PM, Andreas Veithen > >>>> <[email protected]> wrote: > >>>>> > >>>>> Axiom never produces malformed XML. Who said that?? > >>>>> > >>>>> Andreas > >>>>> > >>>>> On Sun, Nov 20, 2011 at 17:59, Sanjiva Weerawarana > >>>>> <[email protected]> wrote: > >>>>> > Isn't that a bug? > >>>>> > If I declare an NS at the Envelope node then that cannot be removed > >>>>> > if > >>>>> > anyone inside uses it. If I'm serializing only the Header > element(s) > >>>>> > then > >>>>> > any in scope namespaces must be available and worst case every > >>>>> > element will > >>>>> > re-serialize them. However under no condition is it correct to > >>>>> > serialize a > >>>>> > child element and end up with malformed XML! > >>>>> > > >>>>> > Sanjiva. > >>>>> > > >>>>> > On Sat, Nov 19, 2011 at 10:28 PM, Andreas Veithen > >>>>> > <[email protected]> wrote: > >>>>> >> > >>>>> >> Assuming that the namespace in question is not the SOAP envelope > >>>>> >> namespace, instead of hacking Axiom, wouldn't it be easier to > remove > >>>>> >> the namespace declaration from the SOAP envelope (so that it will > be > >>>>> >> serialized in the SOAP header block)? > >>>>> >> > >>>>> >> Andreas > >>>>> >> > >>>>> >> On Sat, Nov 19, 2011 at 06:11, Charith Wickramarachchi > >>>>> >> <[email protected]> wrote: > >>>>> >> > Hi Andreas, > >>>>> >> > > >>>>> >> > Issue was this causes an Error in a 3rd party web-service engine > >>>>> >> > when > >>>>> >> > processing some soap headers. > >>>>> >> > > >>>>> >> > Scenario is this. Synapse get a soap request which contains some > >>>>> >> > redundant > >>>>> >> > namespace declarations at header level which are internally used > >>>>> >> > inside > >>>>> >> > the > >>>>> >> > headers. So when synapse forward them to the BE service they > get > >>>>> >> > omitted as > >>>>> >> > they are defined at SOAP Envelope level. > >>>>> >> > > >>>>> >> > BE services header processor incorrectly assumes that headers > are > >>>>> >> > self > >>>>> >> > contained so this causes an error. > >>>>> >> > > >>>>> >> > I was wondering it may make scene to make it configurable as if > >>>>> >> > we > >>>>> >> > think > >>>>> >> > of synapse point of view omitting redundant namespaces may not > be > >>>>> >> > a > >>>>> >> > good > >>>>> >> > idea sometimes. Specially integrating with legacies like this. > >>>>> >> > WDYT ? ( > >>>>> >> > I do > >>>>> >> > agree that this in pure AXIOM point of view its the correct > thing > >>>>> >> > to do > >>>>> >> > as > >>>>> >> > it will reduce the data content that is written to the wire > etc.. > >>>>> >> > ) > >>>>> >> > > >>>>> >> > Can please you point me to a place where this is done ? So that > i > >>>>> >> > can > >>>>> >> > hack > >>>>> >> > the code for the time being for my self and later provide a > patch > >>>>> >> > if > >>>>> >> > devs > >>>>> >> > are ok with my above idea. > >>>>> >> > > >>>>> >> > thanks, > >>>>> >> > Charith > >>>>> >> > > >>>>> >> > > >>>>> >> > > >>>>> >> > > >>>>> >> > > >>>>> >> > On Fri, Nov 18, 2011 at 3:55 PM, Andreas Veithen > >>>>> >> > <[email protected]> > >>>>> >> > wrote: > >>>>> >> >> > >>>>> >> >> No, the namespace repairing performed by the serialize and > >>>>> >> >> serializeAndConsume methods is not configurable. > >>>>> >> >> > >>>>> >> >> What is the use case for preserving a redundant namespace > >>>>> >> >> declaration > >>>>> >> >> on a SOAP header? > >>>>> >> >> > >>>>> >> >> Andreas > >>>>> >> >> > >>>>> >> >> On Fri, Nov 18, 2011 at 03:23, Charith Wickramarachchi > >>>>> >> >> <[email protected]> wrote: > >>>>> >> >> > Hi devs , > >>>>> >> >> > > >>>>> >> >> > When we serialize a OMElement axiom will omit redundant > >>>>> >> >> > namesspace > >>>>> >> >> > declarations by default. Is it possible to disable this > >>>>> >> >> > behavior ? > >>>>> >> >> > In my case i want to keep the redundant namesspace > declarations > >>>>> >> >> > in > >>>>> >> >> > SOAP > >>>>> >> >> > headers. > >>>>> >> >> > > >>>>> >> >> > > >>>>> >> >> > thanks, > >>>>> >> >> > Charith > >>>>> >> >> > > >>>>> >> >> > -- > >>>>> >> >> > Charith Dhanushka Wickramarachchi > >>>>> >> >> > http://charithwiki.blogspot.com/ > >>>>> >> >> > > >>>>> >> >> > > >>>>> >> >> > >>>>> >> >> > >>>>> >> >> > --------------------------------------------------------------------- > >>>>> >> >> To unsubscribe, e-mail: [email protected] > >>>>> >> >> For additional commands, e-mail: [email protected] > >>>>> >> >> > >>>>> >> > > >>>>> >> > > >>>>> >> > > >>>>> >> > -- > >>>>> >> > Charith Dhanushka Wickramarachchi > >>>>> >> > http://charithwiki.blogspot.com/ > >>>>> >> > > >>>>> >> > > >>>>> >> > >>>>> >> > >>>>> >> > --------------------------------------------------------------------- > >>>>> >> To unsubscribe, e-mail: [email protected] > >>>>> >> For additional commands, e-mail: [email protected] > >>>>> >> > >>>>> > > >>>>> > > >>>>> > > >>>>> > -- > >>>>> > Sanjiva Weerawarana, Ph.D. > >>>>> > Founder, Director & Chief Scientist; Lanka Software Foundation; > >>>>> > http://www.opensource.lk/ > >>>>> > Founder, Chairman & CEO; WSO2; http://wso2.com/ > >>>>> > Founder & Director; Thinkcube Systems; http://www.thinkcube.com/ > >>>>> > Member; Apache Software Foundation; http://www.apache.org/ > >>>>> > Visiting Lecturer; University of Moratuwa; > http://www.cse.mrt.ac.lk/ > >>>>> > > >>>>> > Blog: http://sanjiva.weerawarana.org/ > >>>>> > > >>>>> > >>>>> --------------------------------------------------------------------- > >>>>> To unsubscribe, e-mail: [email protected] > >>>>> For additional commands, e-mail: [email protected] > >>>>> > >>>> > >>>> > >>>> > >>>> -- > >>>> Sanjiva Weerawarana, Ph.D. > >>>> Founder, Director & Chief Scientist; Lanka Software Foundation; > >>>> http://www.opensource.lk/ > >>>> Founder, Chairman & CEO; WSO2; http://wso2.com/ > >>>> Founder & Director; Thinkcube Systems; http://www.thinkcube.com/ > >>>> Member; Apache Software Foundation; http://www.apache.org/ > >>>> Visiting Lecturer; University of Moratuwa; http://www.cse.mrt.ac.lk/ > >>>> > >>>> Blog: http://sanjiva.weerawarana.org/ > >>> > >>> > >>> > >>> -- > >>> Charith Dhanushka Wickramarachchi > >>> http://charithwiki.blogspot.com/ > >>> > >> > >> > >> > >> -- > >> Charith Dhanushka Wickramarachchi > >> http://charithwiki.blogspot.com/ > >> > > > > > > > > -- > > The best way to predict the future is to invent it - Alan Kay > > > -- The best way to predict the future is to invent it - Alan Kay
