David Powell wrote:
I'm also a bit confused about the terminology in Section 6.3:
It might be the case that the software is able to process the
foreign markup correctly and does so. Otherwise, such markup is
termed "unknown foreign markup".
So "unknown foreign markup" is "foreign markup" that software is
unable to process?
Yes, something in a namespace that is not understood by the Atom Processor.
But then 6.3 goes on to explain how to process it.
This sounds like a contradiction?
No, why?
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
Also, in what cases would software be able to process "foreign markup"
other than by ignoring it as described in section 6.3 or treating it
as a 6.4 extension?
Treating it as a 6.4 extension *is* processing it as described in
section 6.3.
There is no other case (this is technically implied by section 6.4, see
below)
So I don't see how the term "foreign markup" and "unknown foreign
markup" are any different?
"unknown foreign markup" is the subset of "foreign markup" that an Atom
Processor ignores because it doesn't know what do do with it (i.e. how
to process it).
Also, if 6.4 extensions are a subset of "unknown[?] foreign markup",
6.4 extensions are not a subset of "foreign markup" or "unknown foreign
markup". 6.4 extensions are the whole "foreign markup" set (except it
doesn't deal with "foreign attributes", but the whole section 6 and the
whole spec doesn't deal with them).
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.
These are Simple Extension Elements:
<my:ext/>
<my:ext></my:ext>
<my:ext>foo</my:ext>
These are Structured Extension Elements:
<my:ext attr="val" />
<my:ext attr="val"></my:ext>
<my:ext attr="val">foo</my:ext>
<my:ext attr="val"><foo:bar/></my:ext>
<my:ext attr="val">baz<foo:bar/>baz</my:ext>
<my:ext><foo:bar/></my:ext>
<my:ext>baz<foo:bar/>baz</my:ext>
Is there any other construct I missed?
--
Thomas Broyer