|
Publicité ' | ||||||||||||||||||||||||
|
|
#41 | |||
|
Nouveau Membre du Club
![]() Jean-François CHRÉTIENDéveloppeur informatique Inscription : septembre 2011 Messages : 8 ![]() |
Bonjour à tous.
Citation:
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. Citation:
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 Code :
<INDIVIDU><POIDS><VALEUR>80</VALEUR><UNITE>kg</UNITE></POIDS></INDIVIDU> Code :
<INDIVIDU><POIDS unite="kg">80</POIDS></INDIVIDU> 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 : Citation:
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. |
|||
|
|
40
|
|
|
#42 | |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2006 Messages : 5 389 ![]() |
Citation:
L'ASN1 avec encodage CANONOCAL-PER qui assure le "round tripping" est bien plus performant et propose un encoding extrèmement compact. Le principal avantage de l'XML réside dans la possibilité de le visualiser ou de le saisir sans outil dédié via un simple éditeur de texte. En ce qui concerne, l'aspect "self describing", XML ne résoud cet aspect qu'assez partiellement, si il n'est pas complété d'un XSD.
__________________
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson |
|
|
|
00
|
|
|
#43 | ||||
|
Expert Confirmé
![]() Développeur informatique Inscription : décembre 2008 Messages : 777 ![]() |
Citation:
Citation:
Citation:
_ reconnaître les types _ reconnaître la structure (surtout que YAML sert justement, selon ce que j'ai compris, à gérer des représentations objet des structures... Plus structuré qu'un objet, je connais pas) A noter que JSON est bien plus proche de XML que YAML, qui contrairement aux deux autres (YAML) "Ain't Markup Language" (ahh ces acronymes récursifs...) du coup je comprend mal que tu utilises dans la même situation YAML/JSON et dans une autre XML? Y aurait-il quelque chose qui m'aie échappé? Citation:
Question de goût, je suppose. |
||||
|
|
00
|
|
|
#44 | ||
|
Nouveau Membre du Club
![]() Jean-François CHRÉTIENDéveloppeur informatique Inscription : septembre 2011 Messages : 8 ![]() |
Citation:
Pour t'expliquer là ou XML (à mon sens) apporte un réel plus, je vais partir sur un cas concret. Avant de commencer, je tiens à préciser que mon propos n'a valeur, ni de vérité absolue, ni de généralité. Il me semble évident que comparer des langages ou formats ne peut se faire que de manière contextuelle. Il me semble hasardeux de comparer deux solutions hors d'un cadre problème + contexte bien précis. Pour un même problème, dans deux contextes différents, le résultat de la comparaison de deux solution différentes peut être presque opposé. Une petite explication sur mes composantes syntaxiques et sémantiques car je suis pas sûr que tout le monde comprenne, ni que j'utilise toujours le bon vocabulaire. Prenons l'exemple d'un objet "boite" caractérisé par son volume, sa description et sa représentation mathématique dans l'espace. Chaque caractéristique est une composante syntaxique de la boite. Le volume est un nombre or un nombre est une composante sémantique composée d'un ou plusieurs chiffres. Le chiffre étant la composante syntaxique du nombre. Pour ramener celà à de la POO, un objet est composé de variables qui sont aussi des objets, eux-même composés de variables... En clair, au niveau d'un objet on parle de variables (composantes syntaxiques) et le contenu de cette variable peut-être un objet (composante sémantique). Postulat de départ. Une entreprise produit des conteneurs de différentes formes faites dans différentes matières et réalise ses ventes sur la zone Euro. Il y a un service production, un service commercial, un service communication et la direction de l'entreprise. Les composantes syntaxiques du conteneur sont :
Le service commercial édite une extraction interne au format OpenOffice Calc (référence + coût + prix pour chaque pays). La formalisation est imposée par la direction. Le service commercial édite un catalogue interne au format OpenOffice Writer (référence + description en anglais + coût + prix pour chaque pays) Le service commercial édite un catalogue externe au format Scribus pour chaque pays(référence + description dans la langue du pays + visualisation 2D + prix pour le pays). La formalisation est imposée par le service communication. Le format XML généré par l'extraction de la bdd respecte une XSD unique accessible par tous les services. Les extractions sont spécifiques pour chaque service et ne contient que les données nécessaires. Les extractions sont réalisées par l'application Java qui gère une bdd Oracle. Le service production gère de manière autonome le XSLT qui permet de générer les documents LaTeX. Le service commercial utilise le XSLT fourni par la direction pour générer un document OOCalc qui respecte la DTD du format OpenOffice. Le service commercial utilise son propre XSLT pour générer un document OOWriter qui respecte la DTD du format OpenOffice. Le service commercial utilise le XSLT fourni par la communication pour générer un document Scribus qui respecte la DTD du format Scribus. Ces différents documents sont générés via une application PHP de gestion documentaire (GED) unique pour l'entreprise. Evidemment, la visualisation 2D sous LaTeX se fait en LaTeX... Celle sous Scribus se fait en SVG... Et puis, la référence, selon le document, sera sa valeur EAN13 ou sa représentation en code-barre (qui selon l'application sera dans un format graphique particulier)... J'allais oublier... Un petit nouveau vient d'arriver dans l'entreprise pour mettre en place la vitrine web. Evidemment, il veut ajouter de l'interactivité et fournir une visualisation 3D interactive lorsque le client accède à une fiche produit... Pour moi, l'avantage du XML, réside dans le fait que la gestion du format des données et des documents n'est pas géré directement par l'applicatif. Il devient donc possible de mettre en place une nouvelle GED dans un langage différent (on était en PHP, on passe en Python, Java, ...) sans avoir à recoder les procédures de transformation. Il est possible de modifier XML, XSD, XSLT pour mettre à jour les évolutions structurelles des données ou les évolutions de transformation à partir de n'importe quel outil (script shell ou perl ou PHP, via un éditeur Vim ou Notepad++, via une application dédiée). Il est également possible de créer de nouvelles XSD / XSLT pour de nouveaux formats de documents. C'est celà que j'entend par : Citation:
Entièrement d'accord avec toi ! |
||
|
|
10
|
|
|
#45 | |
|
Futur Membre du Club
![]() Inscription : janvier 2006 Messages : 5 ![]() |
Oui, parce que ce n'est pas du tout ce que j'entendais par "langage non typé".
Ce que dit la page Wikipedia en anglais, c'est que quand tu écris "Personne: 3" dans YAML le langage est capable d'inférer que la valeur de droite est un entier. Ce que je dis moi, c'est qu'il est impossible en l'état actuel des choses de définir une règle conduisant au rejet d'un document parce que la valeur de Personne ne serait pas du bon type. Tu ne peux le faire qu'après avoir lu le document entier et en utilisant ton langage de programmation, pas YAML. Citation:
Dans JSON comme dans YAML, tu retrouves les 3 types fondamentaux des langages de script. Pas dans XML, il n'y a pas intrinsèquement de notion de tableau, tout nœud est soit terminal (texte, commentaire, instruction de process) soit non terminal (une balise qui a des sous-noeuds). Tout simplement parce que XML n'a pas été pensé pour définir des structures de données mais du texte enrichi : c'est un dérivé de SGML et je n'ai jamais entendu qu'on créait des fichiers de config en SGML. Après, si vous voulez l'utiliser pour des structures de données, vous devez définir une convention pour savoir comment représenter une liste ou un hachage. Et si comme le dit l'auteur de l'article ça ne répond pas complètement à la problématique, ce n'est pas parce que le langage est mauvais mais parce qu'on l'utilise pour ce qu'il n'est pas. |
|
|
|
10
|
|
|
#46 | ||||
![]() ![]() Logan Développeur Java Inscription : août 2005 Messages : 1 689 ![]() |
Citation:
C'est comme dire en utilisant les lettres latines, on écrit du Français, c'est naze faudrait utiliser la gramme anglaise ! Citation:
Code XML :
que Sans savoir à qui il est destiné, il n'est pas traitable. De plus, impossible pour une application de savoir si ça lui est adressé ou non.
__________________
Java : Forum - FAQ - Java SE 7 API - Java EE 6 API ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !) Une solution vous convient ? N'oubliez pas le tag ![]() Signature par pitipoisson |
||||
|
|
00
|
|
|
#47 | |||
|
Membre Expert
![]() ![]() Grand Timonier des Chats Inscription : décembre 2011 Messages : 610 ![]() |
Citation:
Il ne faut pas oublier que le XML est l'eXtensible Markup Language, que cette contrainte d'extensiblité est une contrainte forte et qu'elle est incompatible avec certaines autres contraintes (vitesse, compression...). Si on a besoin de définir une structure custom pour ses données et que celle-ci doit être explicite, le XML est approprié. Sinon.... |
|||
|
|
10
|
|
|
#48 | |
|
Expert Confirmé Sénior
![]() ![]() Développeur d'applications Inscription : novembre 2005 Messages : 2 562 ![]() |
Citation:
Pousses ton raisonnement un peu plus et tu finiras par te dire qu'après tout, on peut bien oublier tout ça et bosser avec du fichier plat et définir la structure qu'on veut .Je peux effectivement formaliser mes idées et les appliquer dans le monde tel qu'il est aujourd'hui, mais je serai le seul à le faire donc ce n'est pas intéressant du tout en l'absence de norme communément acceptée. Mon constat est simplement le suivant : coder un parseur pour un document d'origine externe est franchement fastidieux et merdique. Si on mettait d'accord tout le monde sur une structure qui contiendrait la description du contenu ET les données de façon propre et normalisée, on pourrait générer des parsers validants et efficaces sans effort à partir d'un simple échantillon. Je parles pas de remplacer XML par autre chose, simplement définir un standard basé sur XML qui résolve de façon élégante 75% des problèmes liés à ce format, soit les types, l'auto-description, la validation et le fameux "round-tripping" mentionné par l'article. Coté API pour la lecture écriture, ça permettrait de prendre SAX ou Stax et d'en shooter 80% de la complexité. |
|
|
|
00
|
|
|
#49 | |
|
Nouveau Membre du Club
![]() Jean-François CHRÉTIENDéveloppeur informatique Inscription : septembre 2011 Messages : 8 ![]() |
Citation:
Or XML permet de définir des types en rapport avec le langage métier, pas forcément le langage informatique. Si je t'envoie un XML généré pour traiter des couleurs dans l'univers du graphisme, je vais utiliser un schéma XML avec une balise <couleur standard=""></couleur> pouvant prendre comme attribut PANTONE ou RAL (deux standards de couleurs) et en valeur, la référence de la couleur dans le standard concerné. Pour moi (et mon métier), c'est bien un type formalisé et limité à une liste décrit par les référentiels PANTONE et RAL. Pour toi, ce sera une simple chaine de caractère. Les types au sens informatique ne sont qu'un tout petit sous-ensemble syntaxique et sémantique de ce qui peut éxister dans le monde réel. Ce que toi tu vois en tant que développeur n'est qu'une conversion d'un type vers un autre type pour le représenter. Ce qui m'interesse avec XML, c'est de pouvoir formaliser une syntaxe et une grammaire (sémantique) correspondant à mon langage métier. |
|
|
|
00
|
|
|
#50 | |||
|
Membre Expert
![]() ![]() Chris CamelArchitecte de système d'information Inscription : novembre 2006 Messages : 1 242 ![]() |
Citation:
Code JSON :
|
|||
|
|
10
|
|
|
#51 | |
|
Expert Confirmé Sénior
![]() ![]() Développeur d'applications Inscription : novembre 2005 Messages : 2 562 ![]() |
Citation:
Car je ne suis pas en train de dire qu'il faut changer XML en un autre format moins riche. Je dis juste que dans le cas d'utilisation très populaire qu'est l'échange de données informatique entre entreprises ( du style importation journalière et consolidation de documents XML de sources et de structures diverses), on profiterait énormément d'une spec plus limitante avec description du contenu *inclue*. Celle-ci elle-même basée sur XML. Cela constituerait un milieu entre des DTD qui ne décrivent les contraintes que très vaguement et les schémas externes qui sont trop complexes et intrusifs pour les cas simples et cela ouvrirait la porte à la génération simple et efficace de parsers auto-validants. |
|
|
|
00
|
|
|
#52 | ||||||||
![]() ![]() Logan Développeur Java Inscription : août 2005 Messages : 1 689 ![]() |
Citation:
Citation:
Il suffit juste d'utiliser une grammaire adaptée (XSD ou Relax NG). Citation:
Citation:
Citation:
Pour le "round tripping", faudrait déjà que les applications lise et écrive les mêmes données. Et pour celles qui le font je pense qu'elle respecte ce principe sinon c'est qu'elles perdent de l'information. Citation:
(J'y connais rien à JSON, je ressors juste ce que je me rappelle avoir lu à ce sujet).
__________________
Java : Forum - FAQ - Java SE 7 API - Java EE 6 API ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !) Une solution vous convient ? N'oubliez pas le tag ![]() Signature par pitipoisson |
||||||||
|
|
00
|
|
|
#53 | |||
|
Expert Confirmé Sénior
![]() ![]() Développeur d'applications Inscription : novembre 2005 Messages : 2 562 ![]() |
Citation:
Citation:
Citation:
Et va trouver des parsers XSD aware en dehors du monde java, c'est pas si facile... Je bosse presque au quotidien avec des flux XML, et je peux juste dire que dans le cas d'échange et de consolidation de données, les choses pourraient être grandement simplifiées si on avait un modèle de document XML auto-décrit et une façon moins élastique de représenter les choses. |
|||
|
|
00
|
|
|
#54 | ||||
|
Nouveau Membre du Club
![]() Jean-François CHRÉTIENDéveloppeur informatique Inscription : septembre 2011 Messages : 8 ![]() |
Citation:
Citation:
Mon seul soucis étant qu'il faut créer une balise racine pour avoir un code de type : Code :
Après je vois déjà certains te dire qu'on peut faire pareil en mettant le doc xml, le xsd et le xslt dans une archive tar ou zip, comme un document openXML... Mais ce n'est pas ton propos donc on oublie. |
||||
|
|
00
|
|
|
#55 | |||||||
![]() ![]() Logan Développeur Java Inscription : août 2005 Messages : 1 689 ![]() |
Citation:
Cependant quand tu as l'initiative de créer un nouveau "schéma" (ou que tu es suffisamment en amont du déploiement), insistes pour ce que ce soit mis en place et suivant tes recommandations que tu auras bien décrites dans un "XML Developer Guide" ;-) Citation:
Citation:
Après je connais pas XSD sur le bout des doigts, mais je reconnais qu'il y ait des vérifications très complexes, voir trop complexes pour une simple API de manipulation XML. Seulement ce que tu préconises reste très simple à exprimer et vérifier. Citation:
Citation:
__________________
Java : Forum - FAQ - Java SE 7 API - Java EE 6 API ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !) Une solution vous convient ? N'oubliez pas le tag ![]() Signature par pitipoisson |
|||||||
|
|
00
|
|
|
#56 |
|
Membre Expert
![]() Inscription : avril 2004 Messages : 1 246 ![]() |
Mon impression sur cette discussion est la suivante :
1: Le rapport entre la masse de travail à fournir pour "bien utiliser" xml et le temps disponible pour effectuer tout le boulot n'est peut-être pas en la faveur d'une bonne utilisation d'xml, dans la pratique. La question que je me pose, du coup, est la suivante : Peut-il exister un format de donnée qui réponde aux critères énoncés dans le papier et qui ne présente pas le problème 1 ? Est-ce que la description de données n'est pas, intrinsèquement, quelque chose qui prend du temps, qu'on peut ne pas respecter, etc... ? |
|
|
00
|
|
|
#57 | |
|
Nouveau Membre du Club
![]() Jean-François CHRÉTIENDéveloppeur informatique Inscription : septembre 2011 Messages : 8 ![]() |
Citation:
Si oui, serait-il interessant d'avoir des fichiers XML autodécrits avec une norme/namespace XSD simplifiée ? En clair, ton unique fichier XML, contient à la fois le descripteur, les données et éventuellement les traitements. |
|
|
|
00
|
|
|
#58 | |||
![]() ![]() Logan Développeur Java Inscription : août 2005 Messages : 1 689 ![]() |
Citation:
Sinon tout format correctement outillé et/ou capable de comprendre d'autres formats de descripteur devraient couvrir ces besoins. Par exemple, générer un schéma à partir d'un fichier source .java ou .h. Ce que font les APIs de (dé)sérialisation des langages modernes. Ceci dit l'avantage d'XML est qu'il utilise la même notation pour décrire la structure, les données et les transformations qui permettent de passer d'une structure à une autre. Citation:
Citation:
La validation de la grammaire sert juste à définir si un traitement bien conçus pour cette grammaire peut fonctionner. Il est évident que lancer un traitement sur des entrées non valides n'a pas de sens. Au mieux ca part en erreur au pire ca sort n'importe quoi sans que personne ne s'en rende compte. Je vois pas ce que pourrait faire une application (ou une personne) avec une grammaire qu'il ne connait pas et savoir si un fichier est valide ou non au sens de cette grammaire (à part un validateur). Et en l'état, les validateurs que je connaisse repose sur une séparation des deux. Même s'il est possible par API de le faire à la condition que le descripteur arrive avant les données sur le flux. Concernant les traitements, c'est aussi peu interressant. Les données sont émises par un système, et le traitement est conçu par le receveur. Sinon c'est le système émetteur qui ferait les traitements. La seule utilitée ce serait pour "compresser" les données, mais je pense que les algorithmes dédiés font beaucoup mieux ! Et pareillement les outils de transformation que je connais repose sur une séparation des feuilles XSL et des données. Mais on peut également par API programmée une séparation des deux.
__________________
Java : Forum - FAQ - Java SE 7 API - Java EE 6 API ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !) Une solution vous convient ? N'oubliez pas le tag ![]() Signature par pitipoisson |
|||
|
|
00
|
|
|
#59 | |
|
Expert Confirmé Sénior
![]() ![]() Inscription : mai 2004 Messages : 4 538 ![]() |
Citation:
Théoriquement possible, en pratique inexploitable : ces différentes composantes sont généralement générées et exploitées à des « strates » (ou tiers) différentes du système d'information ; ainsi, les données XML seront généralement directement produites par le SGBDR, tandis que le code XSLT sera géré lui par la couche présentation.
__________________
FAQ XML ------------ « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser » Giacomo Leopardi |
|
|
|
00
|
|
|
#60 |
|
Membre Expert
![]() Inscription : avril 2004 Messages : 1 246 ![]() |
Ce que je voulais dire c'est que derrière XML, il y a surtout beaucoup de théorie des langages, des automates, transducteurs et autres joyeusetés du genre.
Définir un format pour déterminer si un fichier est "bien écrit", conforme à une norme définie, que ce soit dans un fichier externe ou non... C'est comme définir un langage L pour reconnaître qu'un texte est bien écrit dans un langage L'. Ce sont des choses qui, en pratique, prennent du temps. Académiquement, c'est merveilleux. Mais le retour immédiat sur "investissement" dans l'industrie.... Faut le chercher loin. Et c'est là qu'est le problème finalement, non ? |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com