Velocity Reviews

Velocity Reviews (
-   XML (
-   -   XML Structure (

shapper 05-28-2009 11:02 PM

XML Structure

I am replicating an SQL database table in XML. I have the following

public class Bag {
public Guid Id { get; set; }
public String Content { get; set; }
public DateTime? Created { get; set; }
public String Name { get; set; }
public Boolean? Open { get; set; }
public DateTime? Updated { get; set; }

When I should use something like:

<Bag Id="" Open="">


<Bag Id="">

Please, see the difference between the Open and Id ...
When should I use one or the other?


Joe Kesselman 05-29-2009 01:10 AM

Re: XML Structure
If you websearch on this question -- when to use attributes vs. when to
use children -- you'll find essentially the following advice:

1) Attributes can't be repeated; child elements can. That is, you can have
<Bag Id="" Open="">
but not two Open= attributes.

2) Attributes can only have simple text as their values. If you may
eventually want to structure the value, use a child element.

3) Attribute values are normalized (that is, line-break characters get
turned into spaces before the XML application sees them). I believe
there are workarounds involving numeric character references, but in
general, if you will want to retain newlines in the value you should use
a child element.

4) Attribute order is not meaningful, and the parser may return
attributes to the application in any order. If the ordering of values is
important to your application, attributes may not be the right choice.

In other words, in many ways, attributes are inherently more limited
than child elements.

But sometimes a value really is intended to modify/qualify/identify a
particular instance of an element or are "side information" to help
describe how that element and its content should be interpreted, and
will never be anything more than a single simple value. (Your Id=
attribute is a case of the former; schema type overrides are an example
of the latter.) In that situation, it may be easier for the humans who
are reading the document and/or writing the software to process it if
you make that value an attribute.

So in the end, this is really a matter of style. I'd suggest you look at
how attributes are used in markup languages written by other people --
other XML documents, HTML, and so on -- as illustrations of how this
decision has been made in the past. Then draw up a proposal, run it by
your intended user community, and see if they have strong (and
justified) opinions.


SEO by vBSEO ©2010, Crawlability, Inc.