This proposal provides content for section 9 "How To Extend Atom", noting the locations where non-Atom-namespace markup may be inserted and requiring "Must Ignore" behavior from software.
The default MustIgnore rule needs to be spelled out somewhere.
(These sub-section numbers will be bumped by 1 if PaceExtensionConstruct is accepted.)
=== 9. Extending Atom === ==== 9.1 Extensions From Non-Atom Vocabularies ==== This specification describes Atom's XML markup vocabulary. Markup from other vocabularies ("foreign markup") can be used in Atom in a variety of ways. Text Constructs may contain foreign markup which SHOULD be HTML or XHTML. The atom:content element is designed to support the inclusion of arbitrary foreign markup. Also, Person Constructs, the atom:head element, and the atom:entry element allow the inclusion of foreign markup. ==== 9.2 Extensions To the Atom Vocabulary ==== Future versions of this specification may add new elements and attributes to the Atom markup vocabulary. Software written to conform to this version of the specification will not be able to process such markup correctly and, in fact, will not be able to distinguish it from a markup error. For the purposes of this discussion, unrecognized markup from the Atom vocabulary will be considered "foreign markup". Unlike markup from other vocabularies, foreign markup from the Atom vocabulary MAY appear at any location in an Atom document. ==== 9.3 Software Processing of Foreign Markup ==== Software processing an Atom Document which encounters foreign markup in a location that is legal according to this specification MUST NOT stop processing or signal an error. It may 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". When unknown foreign markup is encountered as a child of atom:entry, atom:head, or a Person Construct, software SHOULD bypass the markup and any textual content and MUST NOT change its behavior as a result of the markup's presence. When unknown foreign markup is encountered in a Text Contruct or atom:content element, software SHOULD ignore the markup and process any text content of foreign elements as though the surrounding markup were not present.
TimBray (with advice from Dave Orchard)