XOM : XML Object Model 1.0
XML est definitivement une affaire de personnalites ! Apres Michael
Kay et son processeur Saxon , Tim Bray et genX , Daniel Veillard et
libxml , Elliotte Rusty Harold annonce [1] un nouveau parseur Java XML
: XOM 1.0.
Frederic Laurent , opikanoba.org ( fl@opikanoba.org ).
---------------
Retrouvez cet article en ligne
(http://xmlfr.org/actualites/tech/050106-0001).
Donnez votre avis !
mailto:xml-tech@xmlfr.org?subject=Re:%20INFO%20:%20XOM%20:%20XML%20Object%20Model%201.0
---------------
Elliotte Rusty Harold [2] est un expert des technologies XML . Auteur
de plusieurs ouvrages sur le sujet, il s'est penche de pres sur les
avantages et les inconvenients des differentes API permettant de
manipuler des documents XML . Sa conclusion est assez severe : les API
XML [3] (comme SAX [4] ou DOM [5] ) ont ete ecrites par des
programmeurs experts qui decouvraient XML . Ainsi le produit de leurs
travaux n'etait pas, toujours selon Elliotte Rusty Harold , d'une
grande qualite. Cette arrogance, l'auteur la justifie par le fait
qu'elle est construite sur une forte experience du domaine et sur son
expertise demontree au fil des ans.
Ainsi, il a passe en revue les quatre types d'API : evenementielles
type push (comme SAX ), evenementielles type pull (comme XMLPull [6] ou
StAX [7] ), celles a base de representation arborescente (comme DOM ,
JDOM [8] , etc) et enfin celles dites de « Data Binding » (comme Castor
[9] ou JAXB [10] ). De toutes ces observations, Elliotte Rusty Harold
en a tire une conclusion. Toutes presentent suffisamment
d'inconvenients pour laisser la place a une nouvelle qui tenterait
d'etre plus pertinente. Les objectifs qu'il fixe pour XOM sont
prometteurs !
- produire du XML correct. XOM est une implementation de XML 1.0
focalisee sur l'impossibilite de produire du XML mal forme,
- facile a utiliser grace a une API intuitive evitant de consulter
frequemment la documentation,
- facile a apprendre : un seul paquetage nu.xom pour toutes les
fonctionnalites principales. Tout ce qui se trouve en dehors est
optionnel et peut-etre ignore par un utilisateur debutant. XOM ne
doit pas surprendre, les methodes ont des noms explicites. Si XOM
surprend, la surprise doit venir de XML lui-meme et non de cette
mise en oeuvre Java [11] ,
- rapidite d'execution et taille en memoire acceptable : ces aspects
ne sont clairement pas des priorites pour l'auteur qui prefere se
concentrer sur les points precedents, pour offrir un ensemble
stable qu'il pourra optimiser par la suite.
Pour construire cette API, Elliotte Rusty Harold a conjugue principes
de conception objet, principes lies a Java et a la nature intrinseque
de XML . Ainsi les classes (il n'y a pas d'interfaces, l'auteur les
jugeant inadaptees pour une librairie efficace) possedent des
pre-conditions et des invariants sur lesquels l'utilisateur ne peut
passer outre. Seules les methodes ne mettant pas en peril la conformite
vis-a-vis de XML peuvent etre surchargees. Et a l'instar des reflexions
sur DOM Traversal [12] , XOM n'implemente pas non plus le design
pattern Visiteur [13] (des donnees d'une classe pouvant etre manipulees
de l'exterieur sans controle). Car l'obsession de l'auteur est bien
d'assurer l'impossibilite pour un utilisateur de produire un document
XML mal forme.
Contrairement aux idees recues, XOM n'a rien a voir avec JDOM .
L'auteur a participe au developpement de ce dernier et reconnait avoir
beaucoup appris techniquement. Cependant, en desaccord avec de nombreux
principes de conception dans JDOM , il hesita a s'en servir de base
pour en creer une nouvelle version. Finalement, il abandonna l'idee et
repartit d'une feuille blanche. Si XOM est ecrit en Java , l'API se
distingue donc de JDOM ou de DOM4j [14] en laissant certaines
fonctionnalites inherentes au langage Java volontairement de cote.
Ainsi les classes sont pas «serializable» car XML est lui-meme un
format offrant cette fonctionnalite et est nettement plus
inter-operable que celui de la «serialisation» java. La notion de
classe «Cloneable» est egalement laissee de cote au profit du copie
constructeur classique. Les listes de noeuds utilisent une
representation interne a XOM et ne se basent pas sur les «List» Java ,
jugees pas assez performantes (notamment vis-a-vis des threads). Enfin,
les principes de programmation objet sont respectes puisque les
accesseurs en ecriture ne retourne pas l'objet lui-meme mais le type
«void». Ce qui contraste avec les facilites de JDOM , qui permet
notamment d'ecrire, en une seule ligne
new Element("html").appendChild(new Element("head"))
Les fonctionnalites de XOM 1.0 sont les suivantes :
- libre, pure Java
- un nouveau modele de document XML 1.0 . XOM ne supporte pas XML 1.1
(deliberement), qualifie d'abomination par l'auteur
- support de XInclude [15]
- support de XML canonique [16] (traduction francaise [17] )
- des ponts vers SAX et DOM
- support de TrAX [18] pour les transformations XSLT [19]
Elliote Rusty Harold prevoit les ameliorations suivantes [20] :
- possibilite de naviguer dans l'arbre
- support de XPath 1.0 [21]
- filtre (un des plus de JDOM )
- support des catalogues (pour les DTD [22] )
- support de XML encryption [23] et XML digital signatures [24]
Pour faciliter son utilisation, l'auteur fournit un tutorial [25] . Par
ailleurs, l'absence du support de XPath et le besoin de faire des
requetes sur les documents ont pousse Wolfgang Hoschek a developper
Nux [26] , une extension permettant d'utiliser XQuery (et donc XPath
2.0 ) avec XOM . Cette mise en oeuvre utilise Saxon-B [27] comme moteur
de requetes.
Si XOM est un logiciel libre , il n'en reste pas moins qu'il est
l'oeuvre d'un developpeur determine a garder le controle de son oeuvre.
Elliotte Rusty Harold insiste beaucoup sur ce point. Meme s'il est
ouvert aux critiques et suggestions, il proclame XOM comme une
republique bananiere : «XOM is a more-or-less benevolent dictatorship,
not a democracy. I am the only committer. This is my API, and it
reflects my thoughts and desires». Cela a au moins le merite d'etre
tres clair ! XOM est disponible depuis le site xom.nu [28] sous licence
LGPL [29] .
Autres articles :
- XOM: une nouvelle API XML [30]
- La longue marche de JDOM 1.0 [31]
- Deux nouvelles versions pour Saxon 8.0 ! [32]
Copyright 2005 , Frederic Laurent .
---------------------------------------------------------
References:
[1] http://www.cafeconleche.org/#news2005January6
[2] http://www.elharo.com/
[3] http://www.w3.org/XML/
[4] http://www.saxproject.org
[5] http://www.w3.org/DOM/
[6] www.xmlpull.org/
[7] http://dev2dev.bea.com/technologies/stax/index.jsp
[8] http://jdom.org
[9] www.castor.org
[10] http://java.sun.com/xml/jaxb/
[11] http://java.sun.com
[12] http://www.w3.org/DOM/faq.html#visitor
[13] http://en.wikipedia.org/wiki/Visitor_pattern
[14] http://www.dom4j.org/
[15] http://www.w3.org/TR/xinclude/
[16] http://www.w3.org/TR/xml-c14n
[17] http://www.yoyodesign.org/doc/w3c/xml-c14n/
[18] http://xml.apache.org/xalan-j/trax.html
[19] http://www.w3.org/TR/xslt
[20] http://cafeconleche.org/XOM/futuredirections.xhtml
[21] http://www.w3.org/TR/xpath
[22] http://www.w3schools.com/dtd/dtd_intro.asp
[23] http://www.w3.org/Encryption/2001/
[24] http://www.w3.org/Signature/
[25] http://cafeconleche.org/XOM/tutorial.xhtml
[26] http://dsd.lbl.gov/nux
[27] http://saxon.sourceforge.net/
[28] http://www.xom.nu/
[29] http://www.gnu.org/copyleft/lesser.html
[30] http://xmlfr.org/actualites/tech/020923-0001
[31] http://xmlfr.org/actualites/tech/040910-0001
[32] http://xmlfr.org/actualites/tech/040611-0001
---------------------------------------------------------
Mail genere par FormatedTextOutputHandler pour XT
(http://4xt.org/downloads/examples/outputhandlers/formatedtext/).
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Fri Jan 7 01:42:19 2005