Première rédaction de cet article le 19 février 2006
Lorsqu'on veut mettre à jour un gros document XML, il serait très intéressant de pouvoir ne transmettre que la différence avec l'ancien document, le patch. Cela permettrait également de mieux documenter la différence entre les deux fichiers. Mais il n'existe pas de langage standard pour exprimer ces patches. Il y a plusieurs propositions concurrentes.
Un exemple tiré d'une des propositions, XML-patch, vaut mieux qu'un long discours :
<add sel="doc"><bar id="ert4773">This is a new child</bar></add> <remove sel="doc/foo[@a='1']"/>
Le patch ci-dessus crée un nouvel élément "bar" et détruit un élément "foo". Comme toutes les propositions de langage de patch, celle-ci utilise XPath pour désigner l'endroit où se font les changements.
Les propositions existantes sont :
draft-mouat-xml-patch-00.txt
).(Avec un autre langage de données, JSON, Rob Sayre a proposé un format de patch sympathique.)
Une fois qu'on aurait un tel langage, il suffirait de modifier un des programmes de calculs de différence entre fichiers XML (comme Python xmldiff).
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)