Re: SVG12: IRI Processing rules and xlink:href

At 04:40 AM 6/7/2005, Andrew Sledd wrote:
>Hello,
>The processing of references (section 14.1) seems clear in its 
>presentation but is a bit convoluted in practice, especially when combined 
>with error processing. It appears to me that the SVG spec only sets 
>restrictions on the resultant reference. The SVG spec defers completely to 
>the IRI/URI reference for requirements on reference resolution.
>
>I have a question about interpretation and reference resolution, in 
>particular about the reference xlink:href="". What does the reference 
>resolve to? Is it valid for image in the SVG Tiny Profile? Is it valid for 
>use and animation in the SVG Tiny Profile?
>
>I interpret the specs (SVG 1.2/IRI/URI) to say as follows:
>1) xlink:href="" resolves to a reference to the document itself (if no 
>other xml:base attribute is explicitly given in the ancestors to the 
>referencing element).

Andrew,
I think xlink:href="" is an error. The attribute definition references RFC 
2396 [http://www.faqs.org/rfcs/rfc2396.html]. Reading through that RFC, 
when you get to relative URIs in section 5, it says:

rel_path      = rel_segment [ abs_path ]
rel_segment   = 1*( unreserved | escaped |
                           ";" | "@" | "&" | "=" | "+" | "$" | "," )

The key thing is the "1*", which looks to me as if there must be at least 
one character in a relative URI.

Furthermore, even if "" were a valid relative URI, then I contend it would 
still not reference the document itself. To illustrate, let's say the 
current document has a URI of http://example.com/foo.svg. Then according to 
section 5.2 of RFC 2396, step 6a, for relative URI processing, it says:

          All but the last segment of the base URI's path component is
          copied to the buffer.  In other words, any characters after the
          last (right-most) slash character, if any, are excluded.

Therefore, assuming for the moment that it is not error, an attribute value 
of xlink:href="" would resolve to "http://example.com/", not 
"http://example.com/foo.svg".

But there are greater URI experts around. (I am surprised none of them have 
spoken up so far.)

Jon


>2) In terms of IRI processing (Section 14.1.1) this is both a local 
>reference and for the scope of <image> and <use> is an indirect circular 
>reference.
>
> From this I conclude that xlink:href="" to be invalid and put the 
> document in error

>a) for <use> and <animation>; except in the case where its resolved 
>xml:base breaks this inherent circular reference
>b) for <image>; except in the case where its resolved xml:base is a 
>non-local reference
>
>Is this reasoning correct?
>
>Regards,
>Andy Sledd
>
>_______________________________________
>Andrew Sledd
>Ikivo AB

Received on Tuesday, 7 June 2005 19:17:08 UTC