Subject: Simple Extensions and xml:base

From: David Powell <[email-masked]>
Date: Fri, 5 Aug 2005 07:21:37 +0100

The intention of Simple Extension Elements is to provide a
simple class of extension that is part of the Atom model, and can
therefore be preserved end-to-end by implementions via publishing
clients, servers, databases, and aggregators.

We say that Simple Extension Elements are not language sensitive, but
we don't say that Simple Extension constructs aren't affected by
xml:base.  I think that the implication is that they are not, but it
is not very explicit:

> [...] Simple Extension elements are not Language-Sensitive. The
> element can be interpreted as a simple property (or name/value pair)
> of the parent element that encloses it. [...] The character data
> content of the element can be interpreted as the value of the
> property. If the element is empty, then the property value can be
> interpreted as an empty string.

It doesn't make sense for Simple Extension Elements to be affected by
xml:base, because that requires extensions specific processing to know
whether the extension is intended to be a URIRef or not; avoiding
extension specific processing is the reason for Simple Extension
Elements existence.

Can we add some clarification?

-- 
Dave

---

From: Tim Bray <[email-masked]>
Date: Fri, 05 Aug 2005 04:50:52 -0700

> xml:base.  I think that the implication is that they are not, but it

They *are* affected by xml:base.  xml:base establishes the base URI  
for wherever it's in-scope, with a specific callout to RFC3986 for  
the semantics.  Anytime you see something that you know is a relative  
URI reference, you have to absolutize it using the base URI, and the  
base URI is what xml:base says it is.  -Tim

---

From: David Powell <[email-masked]>
Date: Fri, 5 Aug 2005 13:59:48 +0100

> base URI is what xml:base says it is.  -Tim

Yes, I understand, but I disagree.  xml:base only affects things that are
designated to be URI references.  I wouldn't expect
<atom:title>/index.html</atom:title> to get resolved as a URI, because
atom:title isn't defined to be a URIRef.  Neither are Simple Extension
Elements.

There is a layering.  Implementors of draft-ietf-atompub-format-10 can never
know that an arbitrary Simple Extension Element's value is a URI reference, so
it can never be treated as one; the value is clearly stated to be a
language-insensitive string, not a URIRef, therefore xml:base has no effect.

Specifications for extensions may declare that the string value should be
interpretted by applications as being a URI (or a date, or an integer, or
whatever), but we are at a different layer now, the xml:base of the element
that the property was declared is as irrelevent as its namespace-prefix.

--
Dave

---

From: Bill de hÓra <[email-masked]>
Date: Fri, 05 Aug 2005 14:08:26 +0100

Tim Bray wrote:
> They *are* affected by xml:base.  xml:base establishes the base URI  for
> wherever it's in-scope, with a specific callout to RFC3986 for  the
> semantics.  Anytime you see something that you know is a relative  URI
> reference, you have to absolutize it using the base URI, and the  base
> URI is what xml:base says it is.  -Tim

What Tim said. The xml:base is generic XML tech, so implementations
won't/can't care about extension specifics of Atom. Asking people's XML
tool chains to handle Atom base processing in a special way... pain,
lots of pain ;)

cheers
Bill

---

From: Tim Bray <[email-masked]>
Date: Fri, 05 Aug 2005 07:55:38 -0700

> atom:title isn't defined to be a URIRef.  Neither are Simple Extension

Right, but anyone who reads a simple extension out of an Atom feed  
and finds something they consider to be a relative URI reference, and  
wants to absolutize the reference, either uses the base URI as  
established by xml:base, or they are wrong. -Tim

---

From: David Powell <[email-masked]>
Date: Sat, 6 Aug 2005 09:34:45 +0100

>established by xml:base, or they are wrong. -Tim

I wasn't suggesting that we needed special xml:base rules.  My point was that it
is not legal for an extension to define its content  to be a (relative) URIRef.
(although it is ok for an extension to contain an absolute URI.)

Simple Extensions are designed to be a simple class of extension that generic
support can be implemented for fairly easily in publishing clients and servers.
 They are intended to be name/value pairs that can be stored outside of an Atom
Infoset.   Generic processing is the reason that the distinction between Simple
and Structured extensions exists.

Generic processing, for implementations with database or RDF backends, can't be
implemented if you need to know whether each extension contains a URIRef or
text before putting the extension in your database.

You can't put URIRefs in Simple Extension Elements because some implementations
will not preserve their base URI (which is legal behavior, because the spec
defines them to contain plain strings, not URIRefs.)

I think that this is already implied by the spec, but it obviously isn't very
clear.

--
Dave