Continuing my case for XML Next
Compare this:
<?xml version="2.0" ?>
<invoice>
<number>123456789</number>
<date>2004/01/01</date>
<shipper>Fedex</shipper>
<customer>Microsoft</customer>
<address>
<street>One Microsoft Way</street>
<city>Redmond</city>
<state>WA</state>
<postal>12345</postal>
</address>
<items>
<item>ABCD1233|LCD TV 60"|125|357.95</item>
<item>ABCD1234|LCD TV 61"|126|358.95</item>
<item>ABCD1235|LCD TV 62"|127|359.95</item>
<item>ABCD1236|LCD TV 63"|128|360.95</item>
<item>ABCD1237|LCD TV 64"|129|361.95</item>
<item>ABCD1238|LCD TV 65"|130|362.95</item>
<item>ABCD1239|LCD TV 66"|131|363.95</item>
<item>ABCD1240|LCD TV 67"|132|364.95</item>
<item>ABCD1241|LCD TV 68"|133|365.95</item>
<item>ABCD1242|LCD TV 69"|134|366.95</item>
</items>
<totals>
<amount>1234.56</amount>
<discount>123.45</discount>
<taxes>234.56</taxes>
<total>2345.67</total>
</totals>
</invoice>
to this:
<?xml version="1.0" ?>
<invoice>
<number>123456789</number>
<date>2004/01/01</date>
<shipper>Fedex</shipper>
<customer>Microsoft</customer>
<address>
<street>One Microsoft Way</street>
<city>Redmond</city>
<state>WA</state>
<postal>12345</postal>
</address>
<items>
<item>
<code>ABCD1234</code>
<description>LCD TV 60"</description>
<quantity>125</quantity>
<unitprice>357.95</unitprice>
</item>
<item>
<code>ABCD1235</code>
<description>LCD TV 61"</description>
<quantity>125</quantity>
<unitprice>357.95</unitprice>
</item>
<item>
<code>ABCD1236</code>
<description>LCD TV 62"</description>
<quantity>125</quantity>
<unitprice>357.95</unitprice>
</item>
<item>
<code>ABCD1237</code>
<description>LCD TV 63"</description>
<quantity>125</quantity>
<unitprice>357.95</unitprice>
</item>
<item>
<code>ABCD1238</code>
<description>LCD TV 64"</description>
<quantity>125</quantity>
<unitprice>357.95</unitprice>
</item>
<item>
<code>ABCD1239</code>
<description>LCD TV 65"</description>
<quantity>125</quantity>
<unitprice>357.95</unitprice>
</item>
<item>
<code>ABCD1240</code>
<description>LCD TV 66"</description>
<quantity>125</quantity>
<unitprice>357.95</unitprice>
</item>
<item>
<code>ABCD1241</code>
<description>LCD TV 67"</description>
<quantity>125</quantity>
<unitprice>357.95</unitprice>
</item>
<item>
<code>ABCD1242</code>
<description>LCD TV 68"</description>
<quantity>125</quantity>
<unitprice>357.95</unitprice>
</item>
<item>
<code>ABCD1243</code>
<description>LCD TV 69"</description>
<quantity>125</quantity>
<unitprice>357.95</unitprice>
</item>
</items>
<totals>
<amount>1234.56</amount>
<discount>123.45</discount>
<taxes>234.56</taxes>
<total>2345.67</total>
</totals>
</invoice>
Now,
Beware of a much more powerful format with a parser already available in every single computer in the world, Javascript Objects:
invoice={
number :'123456789',
date :'2004/01/01',
shipper :'Fedex',
customer:'Microsoft',
address:{
street:'One Microsoft Way',
city :'Redmond',
state :'WA',
postal:'12345'
},
items:[
['ABCD1233','LCD TV 60"',125,357.95],
['ABCD1234','LCD TV 61"',126,358.95],
['ABCD1235','LCD TV 62"',127,359.95],
['ABCD1236','LCD TV 63"',128,360.95],
['ABCD1237','LCD TV 64"',129,361.95],
['ABCD1238','LCD TV 65"',130,362.95],
['ABCD1239','LCD TV 66"',131,363.95],
['ABCD1240','LCD TV 67"',132,364.95],
['ABCD1241','LCD TV 68"',133,365.95],
['ABCD1242','LCD TV 69"',134,366.95]
],
totals:{
amount :1234.56,
discount: 123.45,
taxes : 234.56,
Total :2345.67
}
}
Use as easy as:
write( invoice.customer );
write( invoice.totals.taxes );
write( invoice.items[1][3] );
So simple it looks dangerous huh?
XML 2.0 is not just about CSV++ see?
It is all about messages, whichever shape they take: circle, rectangle or triangle ;-)