Are empty strings legal xs:anyURI

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

Received on Wednesday, 26 March 2003 20:51:44 UTC