[Bug 11790] New: Mex: serialization of QName could be problematic

http://www.w3.org/Bugs/Public/show_bug.cgi?id=11790

           Summary: Mex: serialization of QName could be problematic
           Product: WS-Resource Access
           Version: PR
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: normal
          Priority: P2
         Component: MetadataExchange
        AssignedTo: public-ws-resource-access-notifications@w3.org
        ReportedBy: dug@us.ibm.com
         QAContact: public-ws-resource-access-notifications@w3.org


MEX was changed so that instead of passing in a MEX-defined String for the
Dialect URI we now pass in the QName of the metadata root element.  I think
this was a good decision however I'm wondering about how it is serialized in
the XML.  Right now its supposed to look like this: 
    <mex:Dialect Type="wsdl:definitions" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" ...> 
and this works just fine - technically.  I'm worried about two things: 

1 - if the definition of the prefix used in the qname ("wsdl" in this case) is
define elsewhere, say on the soap Envelope then when the XML processor and the
SOAP processor are moving this mex:Dialect element around its possible that one
of them might do something like "clone" it or pull it from the Envelope as a
stand-alone element.  Normally cloning of an element will force the xml
processor to make sure all used prefixes/namespaces of that element (and
children) are copied into the clone.  However, the xml processor doesn't know
about this "wsdl" prefix - so its very possible that if the xml declaration of
it is above the element being cloned then it might be lost/unresolvable after
the cloning. 

2 - if you look in ws-eventing and ws-enum there's this paragraph: 
-----
The namespace bindings are evaluated against any namespace declarations that
are in scope where the XPath expression appears within the SOAP message. Note
that the evaluation of expressions that rely on such context dependent bindings
is fragile in the face of transformations that alter namespace prefixes. Such
transformations might occur during the transmission, processing, storage, or
retrieval of a request. Clients that wish to isolate expressions from the
effects of any changes to the namespace prefixes in the containing SOAP message
are advised to construct expressions in a manner that avoids the use of
namespace prefixes. For example, use an expression such as
"/a[namespace-uri()='http://www.example.com']" not "/ns1:a". 
------
I believe that the potential for an xml processor to change the prefix exists
in the ws-mex case as well.  However, unlike the xpath case you can't get
around it since there's no way to use a URI instead of a prefix in a xsd QName
serialization. 

I'd like to discuss this to see if people think we need to address this.

Possible serialization options, if we do want to change it:
- <mex:Dialect Type="nsURI/localPart" ...  
- <mex:Dialect Type="{nsURI}localPart" ...
- <mex:Dialect TypeNS="nsURI" TypeName="localPart" ...

-- 
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.

Received on Tuesday, 18 January 2011 14:40:27 UTC