Cliquez ici.
Accueil
 chercher             Plan du site             Info (English version) 
L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.Les listes de discussions XMLfr sont à votre disposition pour réagir sur nos articles ou simplement poser une question.Si vous ètes passionnée(e) par XML, pourquoi ne pas en faire votre métier ?XMLfr n'est heureusement pas le seul site où l'on parle de XML. Découvrez les autres grâce à XMLfr et à l'ODP.Les partenaires grâce auxquels XMLfr peut se développer.Pour tout savoir sur XMLfr.XMLfr sans fil, c'est possible !Pour ceux qui veulent vraiment en savoir plus sur XML.L'index du site.
 Commentaires et questions non techniques.Commentaires et questions techniques.

 
Cliquez ici.

xml tech : Technologies XML

[xml-tech] INFO : XOM : XML Object Model 1.0

[xml-tech] INFO : XOM : XML Object Model 1.0

Auteur: <redacteurs@xmlfr.org>
Date: 07/01/2005 - 00:42
X-Mailer: FormatedTextOutputHandler

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

Archive générée par hypermail 2.1.8 le 31/01/2005 - 22:02 UTC

webmaster@xmlfr.org

 

xml tech

Discussions techniques au sujet de XML.

Cette liste est à votre disposition pour discuter en français de tout sujet technique lié à XML.



Devenez rédacteur <XML>fr et contribuez au développement du xml francophone !
Les documents publiés sur ce site le sont sous licence "Open Content"
Conception graphique
  l.henriot@online.fr  

Conception, réalisation et hébergement