I took an action on the call today to figure out whether empty strings
are legal in attributes of type xs:anyURI. Here is my analysis:
The xs:anyURI[1] type is based on RFC2396[2] as amended by RFC2732[3].
Here is the breakdown:
URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
If this really does mean [] instead of () then an empty string is
allowed. If not, then:
absoluteURI = scheme ":" ( hier_part | opaque_part )
relativeURI = ( net_path | abs_path | rel_path ) [ "?" query ]
So, all absoluteURI begins with a scheme and a colon. So they can't be
the empty string.
relativeURI can be one of three things:
net_path = "//" authority [ abs_path ]
abs_path = "/" path_segments
rel_path = rel_segment [ abs_path ]
So, net_path and abs_path can't be empty. That just leaves rel_path:
rel_segment = 1*( unreserved | escaped | ";" | "@" | "&" | "=" | "+"
| "$" | "," )
which says there must be 1 or more of the characters listed in the
parens.
So, it all depends on the first production. I'm assuming at this point
that empty strings are allowed.
I would also note that schema validation does NOT take into account XML
Base[4], so although our spec DOES take into account XML Base it doesn't
affect the set of legal values for the soap:role attribute ( or any
other attribute of type xs:anyURI ).
Gudge
[1] http://www.w3.org/TR/xmlschema-2/#anyURI
[2] http://www.ietf.org/rfc/rfc2396.txt
[3] http://www.ietf.org/rfc/rfc2732.txt
[4] http://www.w3.org/TR/xmlbase