xs:anyURI

The primitive type xs:anyURI represents a Uniform Resource Identifier (URI) reference. The value has to be a lexically valid URI reference. Since the bare minimum rules for valid URI references are fairly generic, most implementations accept most character strings, including a zero-length string. The only values that are not accepted are those that make inappropriate use of reserved characters, such as those that contain multiple # characters or have % characters that are not followed by two hexadecimal digits.

Some URI processors require that certain non-ASCII characters be escaped using a percent sign (%) followed by a two-digit Unicode code point. However, the xs:anyURI type does accept these characters escaped or unescaped. Table B-1 shows some examples of valid and invalid URI references.

For more information on URIs, see "Working with URIs" in Chapter 20.

Table B-1. Values of the xs:anyURI type

Values

Explanation

Valid

 
http://datypic.com

Absolute URI (in this case, an HTTP URL)

http://datypic.com/prod.html#shirt

Absolute URI with fragment identifier

mailto:info@datypic.com

Absolute URI using mailto scheme

../%C3%A9dition.html

Relative URI with escaped non-ASCII character

../édition.html

Relative URI with unescaped non-ASCII character

../prod.html#A557

Relative URI with fragment identifier

urn:datypic:com

Absolute URI (in this case, a URN)

 

Empty values are allowed

Invalid

 
http://datypic.com#frag1#frag2

Too many fragment identifiers (# characters) ...

Get XQuery now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.