Bonjour à tous.
Envoyé par
esperanto
Je crois surtout que les gens ont oublié un point fondamental: XML a été conçu à l'origine pour encoder des documents textuels, or aujourd'hui beaucoup veulent l'utiliser pour encoder des structures de données, ce pourquoi il n'a pas été conçu. Pas étonnant donc qu'il ne réponde pas à 100% à la problématique.
Un texte, c'est quelque chose de fondamentalement linéaire : prenez un document Docbook, ôtez toutes les balises mais maintenez l'ordre, vous verrez que l'ensemble reste compréhensible. Avec des structures de données c'est le contraire: quand vous spécifiez par exemple un objet Personne, peu importe que le nom vienne avant ou après le prénom, par contre si vous gardez le contenu sans les balises, ça devient ambigu.
Je pense que tu n'as pas assez poussé ton analyse. On va partir du postulat que les données sont des objets (au sens propre, pas au sens informatique). Chaque objet peut-être décrit de manière syntaxique et/ou sémantique. Je m'explique.
Un objet à des caractéristiques atomiques (composantes syntaxiques) et ensemblistes (composantes sémantiques).
Le sens d'une composante syntaxique est contenu dans le couple définition + contenu (nom=marie, prénom=pierre, taille=160, poids=80) et l'objet auquel elle se rattache. L'ordre des caractéristiques n'a alors pas ou peu d'importance.
Une composante sémantique contient (généralement) sa propre définition CHAPITRE est composé de PARAGRAPHE est composé de PHRASE est composé de MOT. Par contre, si la définition n'est pas forcément nécéssaire, les ensembles n'ont de sens que s'ils sont ordonnés.
Dans tous les cas, XML est suffisament ouvert pour que ses balises permettent de définir des composantes qu'elles soient syntaxiques ou sémantiques.
Envoyé par
esperanto
Résultat?
XML est utilisé de plein de façons différentes. Dites-moi un peu : comment encodez-vous un tableau en XML? Je suis presque sûr que si plusieurs personnes répondent à mon message vous aurez autant de façons totalement différentes, sans qu'on puisse dire avec certitude qu'une est meilleure que l'autre dans tous les cas.
Oui tout à fait. D'ailleurs à ton avis, un tableau est une composante syntaxique ou sémantique ? Comme c'est une composante sémantique, c'est sa destination qui va en partie définir la façon de le coder.
Pour ce qui est de la question attribut vs. balise, la vraie question à se poser est : est-ce une composante ou une information sur la composante ?
Par exemple un individu pèse 80 kg : On peut l'écrire en XML
<INDIVIDU><POIDS><VALEUR>80</VALEUR><UNITE>kg</UNITE></POIDS></INDIVIDU>
ou
<INDIVIDU><POIDS unite="kg">80</POIDS></INDIVIDU>
Mais dans le cadre d'un individu, l'information "kg" est-elle une composante qui a un sens ? Pas forcément, car elle est un qualificatif de la composante "poids". Il en va de même pour un style de paragraphe, la fonte d'un titre, ... On devrait donc utiliser les balises pour les composantes et les attributs pour les qualificatifs des composantes. Toutefois, je dis bien "on devrait" car celà va dépendre de la destination du fichier XML...
D'ailleurs en parlant de destination...
Pour ce qui est du choix TEXTE / CSV / JSON / YAML / XML, j'utilise le raisonnement suivant :
Fichier de conf. écrit et lu par l'application => Texte / CSV (à charge de l'application de gérer le typage et les erreurs sur les données, en écriture et en lecture)
Fichiers d'initialisations écrits par l'utilisateur et lus par l'application pour générer db, templates, docs, ... => JSON / YAML. (à charge de l'application de gérer le typage et les erreurs de données lors de la lecture)
Sérialisation et échange d'objets "simples" intra ou inter-applications => JSON / YAML (à charge des applications de gérer le typage et les erreurs sur les données)
Sérialisation et échange d'objets "complexes" intra ou inter-applications => XML (les développeurs ont accès aux spécifications du XML et les intègrent dans les applications)
Transfert de composantes syntaxiques/sémantiques (données) => XML + XSD + XSLT (les applications ne décident pas des spécifications et/ou de la transformation des données)
Après tout va dépendre des attendus, sachant que vitesse ne rime pas avec robustesse. Si je veux un traitement rapide, je prendrai TEXTE / CSV, tout en sachant que si l'application est mal développée, les risques d'erreur sont assez grands. Si je veux de la robustesse, alors XML + XSD + XSLT. Sachant que l'impact sur la taille des données(occupation réseau, mémoire et disque) et les temps de traitement sera assez fort.
Deux remarques sur le contenu de l'article :
Envoyé par
Hinault Romaric
- self describing : le document XML devrait être suffisant pour obtenir les données sans ambigüité
- round tripping : la conversion de la représentation interne des données dans un logiciel (comme un objet à l’intérieur d’une application Java, des structures dans une solution C, des lignes d’une table Oracle, etc.) au format XML et vice-versa, devrait produire les mêmes données. En d’autres termes : data == DecodeFromXML(EncodeToXML(data)).
Justement non ! Et c'est là toute la puissance d'XML. D'ailleurs l’ambiguïté se trouve à quel niveau ? Soit au niveau de celui qui a implémenté le XML et qui n'a pas suffisamment bien pensé et spécifié la structure, soit au niveau de celui qui va traiter le XML et qui n'a pas tout les éléments pour comprendre ce qu'il a et comment il doit le traiter.
Pour ce qui est du
round tripping, c'est pareil, aux développeurs de produire une structure XML et des procédures d'import/export adaptées...
Encore une fois XML/XSD/XSL définit de la syntaxe et de la sémantique. Rien de plus.
Pour finir et pour répondre à l'article :
Êtes-vous d’accord avec cette conclusion ?
Non. En effet, la phrase (un peu tape-à-l'oeil) "le problème qu’il résout n’est pas difficile et il ne le résout pas bien" pourrait aussi bien s'appliquer à Java, Perl, LaTeX et tout autre langage ou format... Tout va dépendre du problème posé et du contexte dans lequel s'inscrit ce problème.
Que pensez-vous du langage ? Qu'est-ce qui lui manque le plus ?
Très puissant si on l'utilise correctement pour résoudre les bons problèmes. Très lourd et parfaitement inéfficace dans de nombreux cas.
Il lui manque sûrement plein de choses, mais à trop vouloir en faire un langage universel et respectant pléthore de contraintes, on risque d'en faire une usine à gaz inexploitable et impossible à mettre en oeuvre.
Quelle est l’essence du XML pour vous ?
Permettre le stockage, l'échange et le traitement/transformation de composantes syntaxiques et/ou sémantiques dans des contextes hétérogènes et/ou complexes.
4 |
0 |