why elements in XML can’t be numbers

A man wanted to make the numbers be the tag identifiers. Nope. Not allowed. He asked in the xml-doc mailing list why. My answers follows.

Before reading it, check the original letter. If ready, let's go.

On Sat, 09 Apr 2005 01:19:02 -0400
"Thomas J. Hruska"  wrote:

...

Let's say I want a numbered list in XML to contain data. The natural thing to do is to make the numbers be the tag identifiers as part of a parent group.

It depends. For me it's very unnatural. Numbers shouldn't be in XML,
they are to be calculated by a visualisation/transformation agent.

Nope. Not allowed. Here's an example of what I'm talking about:

(This is a really _simple_ example of my main scenario)

< ?xml version="1.0" standalone="yes"?>
<World>
<Widgets>
<Count>15< <Count>
<1>...some data...</1>
<2>...some data...</2>
<3>...some data...</3>
...You get the idea...
</Widgets>
</World>

...

What _was_ the W3C (ir)rationality behind the idea of requiring element names to start with a letter?

One of the design goals for XML was "XML shall be compatible with SGML", and SGML works so.

More, having a programming background, it's quite natural to avoid literals which start with a number. It's because allowing this limits flexibility in different tools.

For example, consider the following XPaths:

aaa[bbb]
aaa[1]

The former selects elements "aaa" which have a child "bbb", the latter selects the first element "aaa".

If we allow "1" as an element name, how to interpret the following:

/World/Widgets[1]

Is it "Widgets" which have a child "1" or is it the first "Widget"?

Categories:

Updated: