Keith M. Corbett said:
Therefore, as elements, the element "<br/>" and the element
"<br></br>" are two /different/ elements, [snip]
What do you mean by different?
Extensionally different, that is:
An element is a certain sequence of Unicode characters. This
is specified by the XML-syntax (BNF).
Two elements differ if they differs as such sequences.
Do you mean the two forms denote elements
that have different structures?
In XML, you do not /denote/ elements. You /write/ elements.
An element is the actual sequence of characters, e.g., "<X/>"
/is/ an element, it does not /denote/ an element. (An element
might /denote/ something, like a book or a notion - depending
on the XML application.)
Let me use a comparison to make the notions clear: In C, the
literal "02" and the literal "002" are two /different/ literals,
even though they /denote/ the same value. The XML elements
are like those literals, not like the values.
This is the notion of "different" that is
at the heart of the preceding discussion. The definition of "element"
clearly shows that <br/>" and "<br></br>" are two forms that each denote a
single (empty) element.
These are indeed two forms. However, they do not /denote/
(empty) elements, the /are/ empty elements. (Just as "2" in C
does not /denote/ a literal, but /is/ a literal [and /denotes/
a value].)
This equivalence is stated explicitly:
"The representation of an empty element is either a start-tag immediately
followed by an end-tag, or an empty-element tag."
Both /are/ elements according to the definition:
[39] element ::= EmptyElemTag | STag content ETag
The part you quoted seems to intend to state that, e.g.,
just as "<br/>" also
is a different element than "<br />".
Per the spec, whitespace between the element name and trailing slash is not
significant:
[3] S ::= (#x20 | #x9 | #xD | #xA)+
[5] Name ::= (Letter | '_' | ':') (NameChar)*
[44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>'
What you quote here, defines "S" (white space) and then
uses this definition to define "EmptyElemTag". It does not
state that this is "insignificant". (An XML application
might choose to consider it to be insignificant, what
surely nearly all XML applications do.)