[
Lists Home |
Date Index |
Thread Index
]
This area is a total disaster zone - given that URIs are supposed to be the
foundation of the web, they are a pretty rocky foundation.
XML itself says that a system identifier "is a URI", but it doesn't say that
it's an error if it isn't, so it seems that parsers that accept a Windows
filename here aren't actually non-conformant.
XML namespaces similarly says that a namespace name is a URI, but it's not
an error if it isn't. (In 1.1, change that to IRI, but the problem
essentially remains.)
The XML Schema spec is a bit clearer. It does explicitly say that the anyURI
type accepts what I call wannabe-URIs (strings that can be turned into valid
URIs by escaping special characters).
Add to this ambiguities within the RFCs - for example the BNF syntax in
RFC2396 doesn't allow the empty string as a (relative) URI, but goes to some
length to explain its semantics. Is an empty string a valid instance of
xs:anyURI? Your guess is as good as mine.
If you're designing your own vocabulary then I think you have complete
freedom to decide what's allowed in your own attribute values. Use the type
xs:anyURI, and then state any constraints you want to impose, e.g. that it
must not contain spaces. Try to define it more clearly than the base specs
manage.
Michael Kay
http://www.saxonica.com/
|