Notes on XML, Elements, and Attributes
Jens O. Meiert, April 23, 2009.
This entry is filed under Web Development.
Contrary to what one might expect, I’m not necessarily bringing in much XML design experience with my occasional contributions to the HTML 5 specification. However, the design of markup languages is something I consider beneficial for my job as a web professional as well. So just as I did with recent notes on maintainability, here are some on XML design. Heavily inspired by some internal and external documentation.
- Attributes mean more restrictions than elements. Every XML design contains some elements. An XML design that only features elements is simplest, but not necessarily most appropriate.
- Elements are handy if data are exposed to the user. If these data are not shown, using an attribute might be more useful.
- Elements should be used when information is represented that can be considered an independent object, and when there is some kind of parent and child relationship.
- Several occurrences in a data model are often better handled by elements rather than attributes. This avoids enumerated attributes like, for instance,
foo1,foo2,foo3, etc. - To order data, elements are more useful than attributes. Attributes are “inherently unordered.”
It is tempting to publish more “notes” posts, but that should be it for now. Similar to PowerPoint presentations that condense information in a way that that information’s essentially starving, notes like this lack the narrative context that helps people make use out of the given information.
Read More
Enjoy the most popular posts, probably including:
Comments
-
On April 23, 2009, 23:15 CEST, Steffen said:
My thoughts on that considering only the information structure aspects of the document:
As long as the information is and stays flat, I would prefer an attribute for brevity.
If information is extensible in nature (concerning cardinality and depth) you should opt for an element, which also contributes to simplification of validation (thinking of xsd or dtd).
That said, I can’t resist to state that the style attribute must be considered as an anti pattern (I know, you will like that, Jens
), looking at sth. like style=”a: 1; b: 2; c: url(y) #3 […];’. It’s ignoring the (x/ht)ml grammar and starts a completely new one instead of using means of XML.
I wonder, if this would still be the design of choice today with the growing popularity of extensible (in terms of namespaces) documents - neglecting all backward compatibility and nostalgic feelings
.
-
On April 24, 2009, 15:10 CEST, Jens Meiert said:
Interesting, thanks Steffen! Would be lovely to hear some thoughts on that from other HTML WG members – and I can follow, but not comment on the history of
@style.