Groeiende weerstand tegen W3C's XML Schema

Pagina: 1
Acties:

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
W3C's XML Schema komt de laatste tijd onder steeds grotere druk te staan. Met name de laatste week is er op diverse plaatsen scherpe kritiek geuit op de:

1. grote complexiteit van de nieuwe schema taal voor XML van het W3C
2. ontoegankelijkheid van de W3C recommendation: er is niet door te komen.
3. gebrekkige formele onderbouwing

De grote complexiteit van XML Schema is niet alleen gebaseerd op de kritiek van gebruikers, maar eigenlijk nog meer op het geringe aantal degelijke implementaties van XML Schema validators. Er zijn in feite maar twee echt degelijke implementaties: MSXML en Xerces, beide van grote organisaties (Microsoft voor MSXML en IBM voor Xerces, wat nu van Apache is). Deze implementaties hebben zelfs echter nog vervelende verschillen, waardoor schemas slecht uitwisselbaar zijn.

Simon St. Laurent heeft een weblog gemaakt van de kritiek van de afgelopen week: Rising Rebellion Against W3C XML Schema

De directe 'vijand' van W3C's XML Schema is Relax NG, wat jullie wellicht kennen vanuit mijn signature ;) . Relax NG wordt alom geprezen vanwege:

1. lage complexiteit: Relax NG is goed te begrijpen en het doorbladeren van de tutorial zorgt over het algemeen voor veel 'aha' gevoel bij de lezers.
2. uitmuntende formele onderbouwing: de semantiek van een Relax NG is ondubbelzinnig en formeel beschreven. Het maken van implementaties laat dus geen vragen open.
3. er is een prettig, niet-xml, syntax

Wat de meeste mensen wel aanvoelen, maar lastig kunnen omschrijven hebben anderen bewezen. Ondanks de grote omvang van W3C's XML Schema blijkt namelijk dat Relax NG een grotere klasse van XML documenten te kan beschrijven dan W3C's XML Schema. Je kan dus elk W3C XML Schema omschrijven naar een Relax NG schema, maar niet elk Relax NG schema naar een W3C XML Schema.

Dit is niet alleen leuk omdat je nu dus een krachtigere schema taal kunt gebruiken, maar deze grotere klasse heeft ook enkele hele aardige en unieke eigenschappen die er voor zorgen dat Relax NG van een zeer modulaire opzet kan genieten.

Het artikel wat deze vergelijking tussen diverse schema talen heeft gemaakt kan je hier vinden: Taxonomy of XML schema languages using formal language theory. Dit is wel een wetenschappelijk artikel, dus het kan een beetje pittig zijn.

James Clark, de man achter XSLT en 1 van de ontwerpers van Relax NG, heeft deze week nog vrij uitgebreid omschreven wat de voordelen van Relax NG tov W3C XML Schema zijn en waarom het in ieder geval een serieuze plaats naar XML Schema verdient:

http://www.imc.org/ietf-xml-use/mail-archive/msg00217.html

Ik heb al eerder het een en ander over Relax NG geschreven. Misschien vind je dat leuk om te lezen:

W3C XML Schema versus RELAX NG (Javahova.net)
XML schema taal strijd begint? (Webgoeroe.net)

Relax NG is gestandaardiseerd door OASIS. Op de website van Relax NG kan je uiteraard de standaard vinden, maar ook een leuke tutorial kunt vinden en links naar implementaties voor vele talen.

http://www.oasis-open.org/committees/relax-ng/

De boodschap van deze strijd is met name dat je niet blind achter de standaarden van het W3C moet aanlopen. Andere organisaties kunnen ook serieuze standaarden neer zetten die technologisch gezien zelfs superieur kunnen zijn aan het werk van het W3C.

Overigens is het nu ook weer niet zo dat W3C's XML Schema in de meeste ideale situatie volledig afgeschreven zou moeten worden: W3C's XML Schema biedt enkele mogelijkheden die het juist weer geschikter maken voor bepaalde toepassingen (typering, overerving).

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Dit is ook wel een aardig artikel:

Desperately seeking help for XML Schema

Met name de kritiek op de inheritance in XML Schema is wel sterk.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Stewie!
  • Registratie: September 2001
  • Laatst online: 13:26

Stewie!

Keen must die!

* Stewie! vindt dat mbravenboer goed bezig is met drie posts onder elkaar

het is altijd fijn om wat mee informatie te krijgen over de zaken waar je mee bezig bent! Maar om even op de weerstand te reageren:
Alternatieven zijn altijd fijn om te hebben, maar ik hoop wel dat er een van deze sterk bovenuit steekt, want anders krijg je weer dat gezeur van de ene die met alternatief 1 werkt en de andere met alternatief 2 en daarbij de nodige problemen krijgen (met uitwiseeling enzo)! Bedoel net zo lame gedoe als het MS-HTML en HTML 4 strijdje, ben blij dat HTML 4 toch alom word genoemd als echte HTML


Strava: https://www.strava.com/athletes/149347154


  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 20:43
Omdat het anders een monoloog gaat worden, dacht ik laat ik ook even wat posten. Zelf heb ik nog erg weinig ervaring met XML, laat staan Relax NG. Ik was eigenlijk van plan om me in mn vakantie te gaan verdiepen in XML, maar na dit gelezen te hebben lijkt het mij verstandiger (en misschien ook leerzamer) om met Relax NG in combinatie met Java en PHP aan de slag te gaan. Ik wil voor Java een gaan kijken of ik het voor elkaar kan krijgen op een eenvoudige manier GUI's inelkaar te timmeren (beetje naar het idee van mbravenboer). In PHP lijkt het me duidelijk, nl websites (eigenlijk dus ook GUI's :)).

Trouwens mbravenboer, die link naar relaxng.org in je sig klopt niet echt meer geloof ik. Er staat nl groot Underconstruction op namens Network Solutions...

  • Juup
  • Registratie: Februari 2000
  • Niet online
Ik durf het bijna niet te vragen (major n00b question coming...) maar wat moet je met een schema als je al DTD's hebt? Die beschrijven toch wat er in een XML document voor mag komen?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Jelmer Barhorst: Ik was eigenlijk van plan om me in mn vakantie te gaan verdiepen in XML, maar na dit gelezen te hebben lijkt het mij verstandiger (en misschien ook leerzamer) om met Relax NG in combinatie met Java en PHP aan de slag te gaan.
Relax NG is uiteraard geen 'vervanging' van XML, maar slechts een alternatieve taal om [i]schemas[i/] te schrijven voor XML documenten (maar dat bedoelde je waarschijnlijk ook ;) ).

Relax NG kan je overigens uitstekend gebruiken in Java, met bijvoorbeeld de standaard en generieke validatie API JARV (mooi spul :P) . Dit is een generieke interface om documenten te valideren tegen een schema. Er zijn implementaties voor XML Schema en Relax NG beschikbaar.
die link naar relaxng.org in je sig klopt niet echt meer geloof ik. Er staat nl groot Underconstruction op namens Network Solutions...
Hum ja :( . Die linkte eerste door naar OASIS, maar ze hebben kennelijk bedacht dat er een aparte site moet komen en tot die tijd de site op blank gezet :? . Ik zal hem zo even aanpassen.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Jaaap: maar wat moet je met een schema als je al DTD's hebt? Die beschrijven toch wat er in een XML document voor mag komen?
Dat is op zich geen hele merkwaardige vraag, maar gelukkig is er een duidelijk antwoord :P .

DTDs zijn volkomen achterhaald in de huidige XML wereld. Allereerst ondersteunen ze eigenlijk geen namespaces, wat echt grote problemen oplevert als je de huidige toestand van XML bekijkt, waar namespaces eigenlijk overal voorkomen.

Ten tweede is DTD een uitermate slappe schema taal (zie het taxonomy artikel). Ze corresponderen met de zogenaamde 'local tree grammars'. Dit betekent dat er geen terminals (XML elementen) mogen zijn die in een verschillende context een ander type hebben. Dit wordt in DTDs vastgelegd doordat er eigenlijk geen onderscheid is tussen terminals en non-terminals: elke terminal is een non-terminal.

Het effect hiervan is dat je bijvoorbeeld niet vast kan leggen dat een 'name' element als kind van een customer andere content kan hebben dan een 'name' element als kind van een company: de 'name' terminal correspondeert altijd met hetzelfde type.

Overigens heeft dit ook voordelen omdat er in een rijkere grammatica ambiguiteiten kunnen ontstaan bij het toewijzen van productie-regels aan XML elementen. Als je deze ambiguiteit niet wilt toestaan, moet je daarvoor een oplossing hebben en dit biedt XML Schema via de xsi:type attributen in het document. Dit vind ik een uitermate onprettige oplossing :'( .

Verder zijn DTDs sowieso ook onpraktisch in gebruik om er eigenlijk hele slechte support is voor interleaving (willekeurige volgorde van kinderen) en mixed-content, wat erg veel gebruikt wordt in de XML wereld. Dit moet je daarom simuleren met allemaal ranzige constructies wat bijvoorbeeld dit tot gevolg heeft:

[topic=495219/1/25]

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Juup
  • Registratie: Februari 2000
  • Niet online
Op vrijdag 07 juni 2002 15:43 schreef mbravenboer een zeer interessant verhaal
Oh. Nou snap ik het. Dank voor de uitleg. Ik mag dus DTD's weer gewoon vergeten?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
DaMorpheus :Alternatieven zijn altijd fijn om te hebben, maar ik hoop wel dat er een van deze sterk bovenuit steekt, want anders krijg je weer dat gezeur van de ene die met alternatief 1 werkt en de andere met alternatief 2 en daarbij de nodige problemen krijgen (met uitwiseeling enzo)!
Gelukkig kan je een W3C XML Schema converteren naar RELAX NG en veel RELAX NG schemas naar W3C XML Schemas.
Bedoel net zo lame gedoe als het MS-HTML en HTML 4 strijdje, ben blij dat HTML 4 toch alom word genoemd als echte HTML
In dit geval gaat het niet om afwijkingen van hetzelfde idee, zoals dat bij HTML varianten het geval was. RELAX NG heeft duidelijk een ander opzet dan W3Cs XML Schema. Uiteraard hebben ze wel voor een groot deel dezelfde doelstelling, waardoor je dus inderdaad een keuze moet gaan maken.

Het grote probleem van het doordringen in de schema wereld is dat W3C voor veel standaarden al gekozen heeft voor een directe link met XML Schema. Dit zie je vooral terug in SOAP, maar bijvoorbeeld ook in XQuery. Het W3C had met XML Schema ook duidelijk de bedoeling om de schema taal neer te zetten, dus op zich is deze keuze niet zo merkwaardig. Dat XML schema nu zwaar onder vuur ligt en RELAX NG als maar populairder wordt terwijl het nog maar vrij recent is gestandaardiseerd, vinden ze daar zeker weten een probleem.

Gelukkig zijn er nog enorm veel meer situaties waarin je niet direct verplicht bent om XML Schema te werken en waar je dus een keuze hebt.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Juup
  • Registratie: Februari 2000
  • Niet online
Wel wazig dat in Relax NG standaard de volgorde van attributes er NIET toe doet en de volgorde van elements WEL.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Jaaap: Ik mag dus DTD's weer gewoon vergeten?
Het is best goed om DTDs te kennen omdat het nog in veel situaties wordt gebruikt en helaas ook onderdeel is van de XML standaard zelf, maar DTDs zijn inderdaad wel ten dode opgeschreven. Ze zullen vervangen worden, maar de problemen van XML Schema bevorderen deze vervanging niet bepaald.

Via xml-dev werd ik hier op gewezen:
"The reality is, XML Schema is the foundation for the rest of XML," said Box. Technologies such as XML Query take XML Schema "for granted, as a given," he said.

SOAP messages need to function with XML Schema, he said. "XML Schema is an inevitability. Resistance is futile. There
is no point in not embracing this thing and I strongly encourage those of you who work in Web services technologies
[to] make sure your story is straight" with respect to XML Schema, Box said.

http://www.infoworld.com/articles/hn/xml/02/06/06/020606hnbox.xml?s=rss&t=news&slot=3
Helaas kan je in veel situaties dus niet meer je keuze baseren op voorkeuren of technische capaciteiten, maar moet je het W3C volgen.

Des te meer de moeite waard om te vechten voor een plaats voor RELAX NG: als het zo door gaat kan men XML Schema wel in plaats van DTDs in de XML standaard opnemen.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Jaaap: Wel wazig dat in Relax NG standaard de volgorde van attributes er NIET toe doet en de volgorde van elements WEL.
Dat is niet zo heel erg wazig omdat in XML de volgorde van attributen er niet toe doet ;) . Het zijn ongeordende 'annotaties' aan een XML element. De volgorde van elementen doet er uiteraard wel toe.

Het is trouwens zelfs zo dat RELAX NG veel meer mogelijkheden biedt om de vereisten voor attributen te beschrijven. Zie daarvoor het stuk van James Clark:
W3C XML Schema's support for attributes is totally inadequate and provides no advance over DTDs. As with DTDs, W3C XML Schema only allows the specification of whether attributes are required or optional. There is no way to specify more complex constraints between attributes or between attributes or elements. There is no way to say that either attribute X or attribute Y is allowed or that either attribute X or element Y is allowed. In my experience, this sort of constraint is extremely common in XML grammars.

RELAX NG integrates attributes into content models. Exactly the same mechanism that is used to constrain the cooccurrence of child elements can be used to constrain the cooccurrence of attributes and the cooccurrence of attributes and child elements.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Juup
  • Registratie: Februari 2000
  • Niet online
Op vrijdag 07 juni 2002 16:00 schreef mbravenboer het volgende:
De volgorde van elementen doet er uiteraard wel toe.
[sarcasm]
Ja want
<card><name>Jaap</name><email>jaap@domain.com</email></card>
is natuurlijk iets HEEL anders dan
<card><email>jaap@domain.com</email><name>Jaap</name></card>
[/sarcasm]

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Jaaap: voorbeeldje
Voor een menselijke schrijver is interleaving (want dat wil je hier dus) inderdaad in veel gevallen 'wenselijk', maar voor een het opstellen van een XML document in een applicatie is interleaving juist totaal overbodig en voor een 'consumer' zelfs erg vervelend.

In veel gevallen is de volgorde natuurlijk wel degelijk relevant. Denk alleen maar eens aan een XSL transformatie :o . Duidelijker voorbeeld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<html>
  <body>
    <h1>Sectie 1</h1>

    <p> ... </p>
    <p> ... </p>

    <h1>Sectie 2</h1>

    <p> ... </p>
    <p> ... </p>
  </body>
</html>

Maar ook in niet documenten kan de volgorde best relevant zijn. Denk bijvoorbeeld eens aan een XML beschrijving van een Java methode met parameters: de document-order kan dan de volgorde van de parameters bepalen.

Als je interleaving (vrije volgorde) wilt kan je dat in een schema aangeven en in het bijzonder erg goed in RELAX NG. Ik zou er zelf echter zuinig mee omgaan omdat XML vaker door applicaties dan door mense wordt geschreven...

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment

Pagina: 1