Attributes vs. Elements:
attributes
elements
represent atomic data represent structured data usually represent properties of object represent parts of object can represent relationships (ID/IDREF types) can represent relationships by including one element into another often represent data that is less important, or data about data may appear only once on an element my appear many times inside another element appears at no guaranteed order, as a set may be required to appear in specified order cannot be "extended" by adding sub-attributes can be extended by adding sub-elements must have unique name within an element There can be several elements with the same name inside another element values are often short and simple values can be long make document concise make document verbose cannot contain <![CDATA[ blocks. can contain <![CDATA[ blocks. cannot have external parsed entities as a value can have external parsed entities as a value can have external unparsed entities or notations as a value (if declared of ENTITY, ENTITIES, NOTATION type) no? All below was written with DTDs in mind
can be validated to have enumerated values (from a list) cannot can be validated to have unique values cannot can have default values cannot
References:
1. Beginning XML. David Hunter, Curt Cagle, Dave Gibbons, Nikola Ozu, Jon Pinnock, Paul Spencer. Wrox Press Ltd.
2.When Should I Use Elements, and When Should I Use Attributes?
http://www.oasis-open.org/cover/elementsAndAttrs.html
3. The Attribute/Text Conundrum. "Document-Centric" vs. "Data-Centric"
http://www.xmleverywhere.com/newsletters/20000525.htm
Quotes:
"Elements and attributes are both containers for information. Many times the choice between an element and an attribute seems very arbitrary, almost matter of style. While the choice may indeed be arbitrary in some cases, the 'typical' roles of elements and attributes and the different types of content models and constraints these two containers support may tip the scales in one direction or the other."
http://www.devguy.com/fp/XML/dtd.htm"Use attributes when you can, and elements when you have to
Advantages:
· Makes the document easier to process using SAX or the DOM
· Makes documents smaller and therefore documents can be processed more efficiently
This rule is fairly self-explanatory. Not everyone is convinced that this is the best way. Arguments against attributes usually assert that elements are easier for humans to read. However, attributes lead to significant performance improvements when processing is involved. The advantages of attributes can not be ignored if scalability is a priority."
http://www.xmleverywhere.com/tips/designTips.html