Choice Element
All <Choice>
elements shall have a @Requires
attribute whose value contains a whitespace-delimited list of namespace prefixes that identify the namespaces that a markup consumer needs to understand to select that Choice and process the content. If the markup consumer does not understand all of the namespaces identified, it shall not select that <Choice>
element. Markup consumers shall select the first <Choice>
element, in markup order, in which all namespaces identified by the @Requires
attribute are understood.
<Choice>
elements can include the attributes @Ignorable
, @MustUnderstand
, @ProcessContent
, @PreserveElements
, and @PreserveAttributes
described in this specification. These attributes shall be prefixed when on a <Choice>
element. A markup consumer shall generate an error if it encounters a <Choice>
element having any unprefixed attribute name, with the single exception of the @Requires
attribute, which shall be unprefixed. @Requires
attribute, when the prefix is associated with the Markup Compatibility namespace, shall generate an error.<Choice>
elements might have ignored attributes. Markup consumers shall not generate an error when encountering such attributes. However, markup consumers shall generate an error when encountering an attribute of the <Choice>
element that belongs to a namespace that is neither understood nor ignorable.
Markup producers shall not generate <Choice>
elements that have the @xml:lang
or @xml:space
attributes. Markup consumers shall generate an error if they encounter the @xml:lang
or @xml:space
attributes on a< Choice>
element, regardless of whether the element is preceded by a selected <Choice>
element.