[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Namespaces, Xml Schema Whitespace normalization, xs:anyURI
Michele Vivoda wrote: > >>> So >>> >>> http://www.example.com/Example with two spaces >>> >>> is not a valid xs:anyURI >> You seem to be assuming that because it's not a >> valid URI then it's not a >> valid xs:anyURI. This doesn't follow. The schema >> spec allows an xs:anyURI to >> contain what I call a "wannabe URI": more formally, >> it can contain any >> string that can be mapped to a URI by following the >> escaping procedure in >> section 5.4 of XLink. This mapping performs >> percent-encoding on all >> "disallowed characters"; a space is a disallowed >> character that maps to %20; >> therefore a space is allowed in an xs:anyURI value >> (even though it not >> allowed in an IRI as defined by RFC 3987). > > You're right, didn't know that, > I went through the spec(s) you mentioned.. > I find it strange anyway, > is a little bit too much for machines > data exchange and too little for an user interface. > > I am not sure if I want this uri > to be reported as valid when doing > validation of machine-written data > ( like for example for the urls of a > publishing system): > > 1) http://www.example.org/c a/c%20b Technically this is not a valid URI and therefore not a legal namespace name. It is a valid xs:anyURI, though it is problematic. The reason it is valid is because spaces are allowed lexically and validation is performed against the value space (which is defined to be the lexical value with the XLink algorithm applied). Now, the fact that XLink lumps disallowed and excluded characters into one group and the algorithm performs %hh escaping on the whole set is what creates this oddity I think. > When I am not so strict and I support > the user with some uri escaping > I would like to help him when he types > > 2) http://www.example.org/c a/ > > to be resolved 'correctly' to > > http://www.example.org/c%20%20a/ > > (as for example windows explorer does) > > and not to > > http://www.example.org/c%20a/ > > may be I am missing something.. You would do this in your application-- before it was ever validated as an xs:anyURI. Generally, the whitespace normalized value is not what you deal with in an editor... you deal with the lexical value. > Just to be clear: this should be a valid xs:anyURI > isn't it ? http://www.example.org/c a/c%20b > and when I 'map' it to an URI becomes > > http://www.example.org/c%20a/c%20b > > Right ? If by "map" you mean apply the algorithm from XLink section 5.4, yes. Note that this kind of "mapping" is not done to namespace URIs in 1.0 or 1.1, so in theory you would never have a (legal) namespace that contained space characters. Cheers, Jeff Rafter
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|