Ik dacht: kom laat ik ook eens een discussie starten
.
(sorry D2k dat het weer een discussie is die 's nachts begint
)
De stelling: XML attributen zuigen!
Nu denk je natuurlijk: "huh? Martin vindt iets aan XML zuigen
". Ja inderdaad, dat vind ik
.
Waarom vind ik dat XML attributen zuigen?
Wat zijn attributen?
Om mijn stelling uit te leggen moeten we eerst bekijken wat attributen eigenlijk zijn. Attributen zijn naar mijn mening bedoelt als aantekeningen bij elementen. Waarom noem ik het aantekeningen? XML attributen maken namelijk geen onderdeel uit van de structuur van een XML document. Als je met behulp van XPath een pad aangeeft in een XML document hoef je namelijk geen rekening te houden attributen die zich op dit pad kunnen bevinden.
Je kunt het als volgt zien: het model van XML is een boom. Deze boom kan je plat tekenen op een blaadje. Attributen zou je mooi kunnen zien als elementen die niet op het blaadje getekend worden, maar bij een knoop omhoog steken.
Als je XML attributen als aantekeningen gaat zien, wordt het een stuk eenvoudiger om beslissingen te gaan nemen over wat je een attribuut maakt en wat niet. Dit is namelijk een zeer vaak voorkomende en lastige beslissing, waarover de meningen nogal over verschillen. Iets wat geen onderdeel zou moeten zijn van een data-structuur, maar een aantekening is bij een onderdeel van de structuur is een attribuut.
Laat ik als voorbeeld het href attribuut van een link nemen: Je creeert in HTML een verwijzing naar een ander (HTML) document door een stukje HTML content in een 'a' element op te nemen. De content van het 'a' element is dus een link. De url zelf is geen link: dit is een vrij essentiele aantekening bij deze structuur. Als url in de content van het element zou staan, zou de url zelf ook een link zijn, wat natuurlijk niet klopt. Daarom is href dus een attribuut geworden.
Allemaal heel leuk, maar ik zie geen probleem!
Ik zei een stukje geleden dit: Als je XML attributen als aantekeningen gaat zien, wordt het een stuk eenvoudiger om beslissingen te gaan nemen over wat je een attribuut maakt en wat niet. Eigenlijk zei ik dat verkeerd. Er had namelijk moeten staan: Als je XML attributen als aantekeningen gaat zien, zou het een stuk eenvoudiger moeten worden om beslissingen te gaan nemen over wat je een attribuut maakt en wat niet.
Ok, het zal je duidelijk zijn dat er volgens mij dus een probleem is
. Ik hoop dat ik je ondertussen nieuwsgierig gemaakt heb
.
Er zijn twee problemen met attributen:
1. De syntax van attributen is compacter dan de syntax van elementen. Hierdoor ben je geneigd om onterecht uit gemakszucht sub-structuur te verbannen naar de status van aantekening: attribuut. Je keuze of iets een attribuut of subelement moet zijn, wordt dus beinvloed door het 'gemak' van attributen. Dit gemak speelt vooral een rol als je XML zelf wilt gaan inlezen in een bepaalde taal: attributen werken dan vaak makkelijker.
2. Attributen bieden minder mogelijkheden dan elementen. Attributen bieden niet de mogelijkheid tot sub-structuur. Hierdoor ben je gedwongen om elementen te gaan gebruiken als je complexere aantekeningen wilt maken met sub-structuur. Hier moet je dus aan de hand van de complexiteit van je aantekening gaan kiezen voor de een of de ander, wat een duidelijke scheiding tussen structuur en aantekeningen sterk in de weg staat.
Wat zijn de gevolgen van deze gebreken?
1. Je ziet op veel plaatsen het gebruik aan sub-structuur in attributen opgelost door maar zelf een sub-structuur te gaan verzinnen. Dit komt dan vaak neer op een token serie, gescheiden door spaties. Het lijkt mij duidelijk dat dit de principe van XML ernstig beschadigd.
2. Puristen die het vertikken om sub-structuur in attributen te gaan ontwikkelen zijn genoodzaakt om gegevens die duidelijk aantekeningen zijn, te gaan gebruiken als echte structuur. Dit leidt tot grote verwarring en verwarrende XML documenten.
Ik ben benieuwd wat jullie hiervan vinden
.
1. Zijn jullie het met me eens?
2. Heb je weleens ergens anders vergelijkbaar commentaar gelezen?
3. Wil je me op andere gedachten brengen? (veel succes in dat geval
).
<bron-vermelding>
Ik ben gedeeltelijk op deze gedachten gekomen na het werken met ATermen: een alternatief voor XML. ATermen laten zoals je vast zult begrijpen wel aantekeningen met sub-structuur toe
</bron-vermelding>
Laat de strijd beginnen!
(sorry D2k dat het weer een discussie is die 's nachts begint
De stelling: XML attributen zuigen!
Nu denk je natuurlijk: "huh? Martin vindt iets aan XML zuigen
Waarom vind ik dat XML attributen zuigen?
Wat zijn attributen?
Om mijn stelling uit te leggen moeten we eerst bekijken wat attributen eigenlijk zijn. Attributen zijn naar mijn mening bedoelt als aantekeningen bij elementen. Waarom noem ik het aantekeningen? XML attributen maken namelijk geen onderdeel uit van de structuur van een XML document. Als je met behulp van XPath een pad aangeeft in een XML document hoef je namelijk geen rekening te houden attributen die zich op dit pad kunnen bevinden.
Je kunt het als volgt zien: het model van XML is een boom. Deze boom kan je plat tekenen op een blaadje. Attributen zou je mooi kunnen zien als elementen die niet op het blaadje getekend worden, maar bij een knoop omhoog steken.
Als je XML attributen als aantekeningen gaat zien, wordt het een stuk eenvoudiger om beslissingen te gaan nemen over wat je een attribuut maakt en wat niet. Dit is namelijk een zeer vaak voorkomende en lastige beslissing, waarover de meningen nogal over verschillen. Iets wat geen onderdeel zou moeten zijn van een data-structuur, maar een aantekening is bij een onderdeel van de structuur is een attribuut.
Laat ik als voorbeeld het href attribuut van een link nemen: Je creeert in HTML een verwijzing naar een ander (HTML) document door een stukje HTML content in een 'a' element op te nemen. De content van het 'a' element is dus een link. De url zelf is geen link: dit is een vrij essentiele aantekening bij deze structuur. Als url in de content van het element zou staan, zou de url zelf ook een link zijn, wat natuurlijk niet klopt. Daarom is href dus een attribuut geworden.
Allemaal heel leuk, maar ik zie geen probleem!
Ik zei een stukje geleden dit: Als je XML attributen als aantekeningen gaat zien, wordt het een stuk eenvoudiger om beslissingen te gaan nemen over wat je een attribuut maakt en wat niet. Eigenlijk zei ik dat verkeerd. Er had namelijk moeten staan: Als je XML attributen als aantekeningen gaat zien, zou het een stuk eenvoudiger moeten worden om beslissingen te gaan nemen over wat je een attribuut maakt en wat niet.
Ok, het zal je duidelijk zijn dat er volgens mij dus een probleem is
Er zijn twee problemen met attributen:
1. De syntax van attributen is compacter dan de syntax van elementen. Hierdoor ben je geneigd om onterecht uit gemakszucht sub-structuur te verbannen naar de status van aantekening: attribuut. Je keuze of iets een attribuut of subelement moet zijn, wordt dus beinvloed door het 'gemak' van attributen. Dit gemak speelt vooral een rol als je XML zelf wilt gaan inlezen in een bepaalde taal: attributen werken dan vaak makkelijker.
2. Attributen bieden minder mogelijkheden dan elementen. Attributen bieden niet de mogelijkheid tot sub-structuur. Hierdoor ben je gedwongen om elementen te gaan gebruiken als je complexere aantekeningen wilt maken met sub-structuur. Hier moet je dus aan de hand van de complexiteit van je aantekening gaan kiezen voor de een of de ander, wat een duidelijke scheiding tussen structuur en aantekeningen sterk in de weg staat.
Wat zijn de gevolgen van deze gebreken?
1. Je ziet op veel plaatsen het gebruik aan sub-structuur in attributen opgelost door maar zelf een sub-structuur te gaan verzinnen. Dit komt dan vaak neer op een token serie, gescheiden door spaties. Het lijkt mij duidelijk dat dit de principe van XML ernstig beschadigd.
2. Puristen die het vertikken om sub-structuur in attributen te gaan ontwikkelen zijn genoodzaakt om gegevens die duidelijk aantekeningen zijn, te gaan gebruiken als echte structuur. Dit leidt tot grote verwarring en verwarrende XML documenten.
Ik ben benieuwd wat jullie hiervan vinden
1. Zijn jullie het met me eens?
2. Heb je weleens ergens anders vergelijkbaar commentaar gelezen?
3. Wil je me op andere gedachten brengen? (veel succes in dat geval
<bron-vermelding>
Ik ben gedeeltelijk op deze gedachten gekomen na het werken met ATermen: een alternatief voor XML. ATermen laten zoals je vast zult begrijpen wel aantekeningen met sub-structuur toe
</bron-vermelding>
Laat de strijd beginnen!
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment