- From: Roy T. Fielding <fielding@gbiv.com>
- Date: Fri, 30 Jan 2004 15:08:37 -0800
- To: Norman Walsh <Norman.Walsh@Sun.COM>
- Cc: Paul Grosso <pgrosso@arbortext.com>, uri@w3.org
> I think there is a change in meaning, and I think the following example > demonstrates it: > > Let's say that doing a GET on http://example.org/path/doc.xml returns > > <doc> > <div xml:base="http://example.org/1/a.xml"> > <p id="x">Some text</p> > </div> > <div xml:base="http://example.org/2/b.xml"> > <p id="y"><a href="#x">LinkX</a></p> > <p><a href="#y">LinkY</a></p> > </div> > </doc> > > The old text says: > > 2) If the path component is empty and the scheme, authority, and > query components are undefined, then it is a reference to the > current document and we are done. > > That seems clearly to say that the first link, LinkX, points to > the "p" with ID "x" in the first div. > > Under the new wording, #x becomes http://example.org/2/b.xml#x and it > seems equally clear that that does not point to the "p" with ID "x" in > the first div. > > That's a change. http://gbiv.com/protocols/uri/rev-2002/rfc2396bis.html#same-document Please read what it says carefully: When a URI reference occurring within a document or message refers to a URI that is, aside from its fragment component (if any), identical to the base URI (section 5.1), that reference is called a "same-document" reference. The most frequent examples of same-document references are relative references that are empty or include only the number-sign ("#") separator followed by a fragment identifier. When a same-document reference is dereferenced for the purpose of a retrieval action, the target of that reference is defined to be within that current document or message; the dereference should not result in a new retrieval. In your example, the base of the reference "#x" is http://example.org/2/b.xml and the resolved reference is http://example.org/2/b.xml#x which differs from the base only by the fragment component. Therefore, it is a same-document reference and its behavior will be EXACTLY the same as prescribed by RFC 2396. > If we need to make a change, that's fine, or at least, that's a point > for discussion. But I don't think we can claim not to be making a > change. The change that was made is noted in Appendix D.2. What I am saying is that this change does not impact documents unless it includes multiple bases that refer to other documents AND references to those other documents within their own base using a reference that is NOT fragment-only. In other words, <doc> <div xml:base="http://example.org/1/a.xml"> <p id="x"><a href="a.xml#y">Link1</a></p> </div> <div xml:base="http://example.org/2/b.xml"> <p id="y"><a href="a.xml#y">Link2</a></p> <p><a href="#y">LinkY</a></p> </div> </doc> under the new interpretation, Link1 is a same-document link. There is no known software that relies on Link1 being an other-document reference for the purpose of a retrieval action. Under no circumstances does a valid same-document link under RFC 2396 become an other-document link under rfc2396bis. Cheers, Roy T. Fielding <http://roy.gbiv.com/>
Received on Friday, 30 January 2004 18:08:13 UTC