David Powell wrote:
Thursday, May 26, 2005, 7:20:23 PM, Thomas Broyer wrote:
Say I am an Atom Processor and I find these extensions elements:
<!-- defined before:
xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" -->
<geo:lat>26.58</geo:lat>
<geo:long>-97.83</geo:long>
Is this something I know how to process?
* yes: this is "known foreign markup", I process it
* no: this is "unknown foreign markup", I ignore it without failing
or signaling an error
So known 6.4 extensions are "known foreign markup", and unknown
extensions are "unknown foreign markup"? Ok.
Yes, though "known foreign markup" is not used in the spec (or I missed it).
And actually, you're right (see below) saying 6.4 extensions do not
describe the whole "foreign markup" set (see below).
6.4 extensions are not a subset of "foreign markup" or "unknown foreign
markup". 6.4 extensions are the whole "foreign markup" set
6.2 says that new elements and attributes can be added.
6.2 deals with the "Atom vocabulary", which is the markup in the Atom
namespace or un prefixed attributes on Atom-namespaced elements (this is
my interpretation, it's not clearly stated in the spec, and I'm quite
sure I already raised this in the past two weeks).
6.1 deals with "foreign markup", that is (still not clearly stated by
the spec text) markup in a namespace different from the Atom namespace.
Earlier
discussion in this thread suggested that these may be inside
<atom:link> elements. Isn't this a type of markup that isn't a 6.4
extension?
6.4 extensions can only appear in atom:feed, atom:entry, and Person
constructs. [BUG ALERT!!!! - they should blatantly be allowed inside
atom:source too, and the inheritance needs explaining]
You're right, 6.4 extensions are the subset of "foreign markup" known as
"Metadata Elements", they' do not represent the whole "foreign markup" set.
For the people who were proposing that atom:link shouldn't ban
content, can they tell me which type of Section 6 markup they regard
it to be? Or were they proposing that Section 6.4 should be extended
to allow Link Extensions.
If future versions of Atom adds (unprefixed) attributes or
(Atom-namespaced) elements inside atom:link, they will be "Extensions to
the Atom Vocabulary" per section 6.2.
If someone defines extensions (attributes or elements in a namespace
other than the Atom namespace) inside atom:link, they will be
"Extensions From Non-Atom Vocabularies", per section 6.1. As they won't
match section 6.4 criteria (not inside atom:feed, atom:entry or a Person
Construct), they won't be "Metadata Elements" and thus their role is
undefined (per section 6.4, last sentence of the single 6.4 paragraph).
(except it doesn't deal with "foreign attributes", but the whole
section 6 and the whole spec doesn't deal with them).
Yes it does, section 6.2 says that future versions of Atom can add new
attributes.
You're right. Although you should have refered to section 6.1. Their
role is just undefined by the spec.
If you read carefully the section 6.4, you'll notice that what is not a
Simple Extension Element is a Structured Extension Element.
A Simple Extension Element is an element with no attribute and is either
empty or has text-only content.
A Structured Extension Element is an element with at least an attribute
or a child.
Yep, I understand Section 6.4, but these rules only apply directly
inside atom:entry, atom:feed, and Person constructs [and atom:source].
Foreign markup in other places isn't 6.4 markup, so what is it?
It is just "foreign markup", per section 6.1. Its role is undefined by
the spec. What the spec says is only how to process it (the MustIgnore
in section 6.3).
Markup which the section 6.2 deals with is markup inside the Atom
namespace. It is not "foreign markup", though it must be considered as
such by Atom 1.0 Processors for the "purposes of this discussion". If it
matches 6.4 criteria, it is "Metadata Elements" markup, otherwise, it is
just "Atom markup which is considered foreign markup for the purposes of
this discussion".
I must however agree that the spec is not as clear as it could be... it
doesn't for example clearly define "Atom Vocabulary" on which definition
of "foreign markup" is relying.
--
Thomas Broyer