XML attributes are pointless?

By Confusion on Thursday 4 September 2008 20:17 - Comments (7)
Categories: Software engineering, XML, Views: 4.738

When you put together an XSD to specify how certain XML documents should look, you are always confronted with the choice to make parts of the information you wish to convey either an element or an attribute. Some people seem to think attributes are pointless and proponents of XML alternatives JSON and YAML sometimes opine as much.

Now I'm not going to make a thorough analysis of when to use elements and when to use attributes, because that has already been done on a great number of occasions. What I wish to do, is to give a simple example of a case in which an attribute makes the information that is to be conveyed easier to understand:

NB. After H!ghGuy's first response I realized I forgot to give an important piece of information: my intention is to store responses to a questionnaire. This is part of a larger piece if XML, storing, for instance, a name, address, etc.

XML:
1
2
3
4
5
<questionnaire>
  <answer question="1">D</answer>
  <answer question="3b">Cow</answer>
  <answer question="last">144</answer>
</questionnaire>



If the 'question' reference needs to be an element, you get either

XML:
1
2
3
4
5
6
7
<questionnaire>
  <answer>
    <question>1</question>
    <answer_contents>D</answer_content>
  </answer
  ...
</questionnaire>


in which case the fact that the element requires an awkward name is indication enough that something is wrong, or

XML:
1
2
3
4
5
6
<questionnaire>
  <answer>
    <question>1</question>
    D
  </answer
  ...


Here D is not actually an 'element' in the way 'element' is used above, but it is an obvious alternatieve.

In the last case, the question seems to be part of the answer element, just like the actual answer is part of the answer element. That just doesn't sit right with me, as they have a decidedly different relationship to the concept of an 'answer'. In JSON and YAML the same solutions appear and I think all are equally unsatisfying.

In short: child elements together constitute the parent element. If you need to provide a piece of meta-information or want to 'annotate' an element, using an attribute is a clear way in which to distinguish this kind of information from the constitutive kind.

Waterkoker of fluitketel nl

Door Confusion op maandag 1 september 2008 21:52 - Reacties (22)
Categorie: Science, Views: 8.676

Naar aanleiding van een recente discussie op het forum over het besparen van energie, ben ik eens gaan zoeken naar het antwoord op de vraag die alle theedrinkers zich waarschijnlijk weleens hebben gesteld: wat is de zuinigste manier om water te koken: met de waterkoker of met de fluitketel?

Bij het zoeken naar Nederlandstalige vergelijkingen kwam ik er een aantal tegen, waaronder deze weblog entry, waarin een overzicht van die links werd gegeven. De conclusie is dat het een nek-aan-nek race tussen de twee is, maar daar ben ik het niet mee eens, omdat in alle links een van de volgende twee dingen onduidelijk is:
  • Wordt er energieverbruik (in Joule) of kosten (in Euro) vergeleken?
  • Wordt bij een verbruiksvergelijking het energieverlies bij het genereren van electriciteit meegenomen?
Beter is deze post, waarin iemand het experiment daadwerkelijk heeft uitgevoerd. Zijn conclusie, gebaseerd op de Britse situatie (ik weet niet wat gas hier per kWh kost) is dat electrisch koken ruwweg 2x zo duur is, maar ruwweg de helft aan energie kost. Neem je het energieverlies bij electriciteitsproductie mee, dan wordt het energieverbruik weer vrijwel gelijk.

Een belangrijk voordeel van een waterkoker boven een ketel, is dat je hem niet kan vergeten, waardoor je energieverspilling tegengaat. Afhankelijk van of je een fluit op de ketel gebruikt en hoe vergeetachtig je bent, kan dat het prijsverschil meer dan goedmaken :).

Daarnaast kwam ik een advies tegen dat waarschijnlijk meer geld en energie bespaart dan switchen van een waterkoker naar gas (maar waar je waarschijnlijk niets aan hebt als de vorige paragraaf al op je van toepassing is:
  • Kook niet meer water dan je nodig hebt.

Running a Java 1.3.1 JDK on Debian

By Confusion on Monday 1 September 2008 09:29 - Comments (4)
Categories: Java, Software engineering, Views: 3.189

Today I needed to fix a bug in an application that runs at a number of different sites, some of which are still stuck at Java JRE 1.3.1. Therefore I downloaded the appropriate JDK from Sun and happily typed

code:
1
./build all


only to be greeted by

code:
1
2
3
/usr/local/jdk1.3.1_20/bin/i386/native_threads/java: error while loading shared
 libraries: libstdc++-libc6.1-1.so.2: cannot open shared object file: No such file
 or directory


What's wrong is that the linux version of this JDK depends on a pretty old version of libstdc++. Luckily, a compatible library is still available from the Debian archives.