http:location grammar

Using EBNF, the grammar to be applied to the Infoset value of
http:location is:

httpLocation ::= CharData? (( openBrace | closeBrace | elementName ) CharData?)*

CharData ::= [^{}]*

openBrace ::= '{{'

closeBrace ::= '}}'

elementName ::= '{' QName '}'

The lexical space of QName is defined in the namespace specification and
is also equivalent to xsd:QName. I believe we only support element
declarations with namespaces so this explains the use QName instead of
Name.

This gives the following results (same as Jonathan's, with an additional
one):

"{town}"       > {town}           >  "Paris"
"{{town}}"     > {{,town,}}       >  "{town}"
"{{{town}}}"   > {{,{town},}}     >  "{Paris}"
"{{{{town}}}}" > {{,{{,town,}},}} >  "{{town}}"
"{{town}"      > {{,town,}        >  ERROR
"{{{town}"     > {{,{town}        >  "{Paris"
"{town}}"      > {town},}         >  ERROR
"{town}}}"     > {town},}}        >  "Paris}"
"{t{o}wn}"     > {t{o}wn}         >  ERROR

I believe this is an LR(k) grammar by the way, with an unlimited k
(QName is unlimited). It's possible k could be bounded to 1 by adding
more states but we don't need to worry about that here.

Now, unless I missed a sentence or two in the specifications, here are
two questions:

With:
"{town}"       > {town}           >  "Paris"
"{tr:town}"       > {tr:town}           >  "Paris"

What are the namespaces associated with "town" or "tr:town"? We store
{http location} in the content model as an xs:anyURI but we don't keep
the namespaces in scope around despite the fact that further processing
might need them to resolve the qnames. Should we clarify that namespace
resolution is done according to the namespaces in scope and/or add a
property to keep those namespaces in scope around? By just using the 

MessageTest-1G defines the following:

<xs:schema elementFormDefault="qualified"
      xmlns:xsmt="http://example.org/message-test/xsd">
 <xs:element name="EchoInt" type="xsmt:intStruct"/>
 <xs:complexType name="intStruct">
     <xs:sequence>
         <xs:element name="int" type="xs:int"/>
     </xs:sequence>
 </xs:complexType>
</xs:schema>
[...]
<interface>
 <operation name="EchoInt" 
      style="http://www.w3.org/2006/01/wsdl/style/iri">
      <input element="xsmt:EchoInt"/>
      <output element="xsmt:echoIntReturn"/>
 </operation>
</interface>
[...]
<binding>
    <operation ref="tns:EchoInt"
      wsoap:action="http://example.org/message-test/action/EchoInt"
      whttp:location="?op=EchoInt;int={int};" />
</binding>

Shouldn't it be {xsmt:int} instead?


Philippe

Received on Friday, 12 January 2007 15:24:25 UTC