30

Bon y'a quand même un truc qui me gêne donc au moins pour ça je vais poster, c'est que tu prends jamais en compte le DTD/Schéma, qui joue un rôle énorme. Tout document XML a un DTD/Schéma, même si il est pas explicitement défini en tant que tel dans le fichier XML (c'est un tort cela dit), mais il modifie énormément ce que tu as (pas) le droit de faire dans ce (type de) document précis.
Puis garder à l'esprit que le XML dans son usage actuel est fait pour pouvoir être écrit, et être lisible (pas pour être lu, nuance smile ) par des humains, même si ça a déjà été dit ça fait jamais de mal cheeky
Ensuite, pour contrer l'argument (je croyais que c'était un exemple débile" au pif ? embarrassed) des attributs répétés. Les balises (nom de balise) c'est de la sémantique, et les attributs (plus souvent leur contenu, moins souvent le nom, mais c'est variable) c'est du contenu, donc en dupliquant les attributs tu dupliquerai le contenu. Et si tu prends le DTD en compte, que fais tu pour les attributs dont la valeur par défaut est utilisée, car définie dans le DTD ? Pour moi ça rend pour raison de consistance l'idée même de répéter les attributs. (sans tenir compte de leur valeur)
Pour l'histoire de checksum, c'est complètement sans rapport. Comme je l'ai dit vite fait plus haut, la redondance est une vérification d'intention, vis-à-vis celui qui a écrit le XML. En gros quand ça détecte l'erreur c'est pour te dire "Ah, si tu voulais faire ça tu as du te tromper quelque part", ou alors simplement "Espèce de boulet, tu as mal orthographié le nom de la balise", ou même "T'es un gros naze qui n'as rien compris au format". Effectivement après ça marche pas partout mais ça on es tous d'accord smile
Après pour le </> j'ai toujours pas envie d'écrire un roman, alors je dirais juste deux choses: 1) Pense aussi au DTD/XSD 2) Le format du document (cf DTD) joue un rôle important dans la détermination de l'utilité de la redondance.
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

31

Je vois pas en quoi la notion de DTD/Schéma vient (in)valider quoi que ce soit dans tout ce qui a été raconté dans ce topic ? (pas la peine d'en faire des tartines et de poster 50 liens vers des documents énormes pour t'affranchir d'une explication, je suis sûr que ça peut s'expliquer en moins de 5 phrases et en restant au niveau du concept, sans s'enfoncer dans des détails techniques).

Pour les attributs répétés, c'est vrai. Du coup je propose comme exemple une syntaxe qui impose de répéter les attributs, pas leur valeur (<a attr="plip">contenu</a attr>) : au même titre que les balises, cette-fois, il y a bien une redondance sur la structure uniquement. Note quand même que d'une part ce n'était que des exemples, d'autre part une redondance sur le contenu pourrait tout à fait être justifiée, je ne vois pas ce qui pose problème ici ?

Enfin pour la détection des erreurs, tu pars du principe qu'on ne veut effectuer uniquement ce que tu appelles "vérification d'intention". Pourquoi ? Moi je pense qu'on pourrait faire le choix soit ne rien vérifier du tout (à part bien sûr la validité même du fichier), soit vérifier bien plus que ce qui est fait actuellement. Alors bien sûr que j'introduis une nouvelle vérification qui n'est pas une "vérification d'intention", c'est bien l'objectif de mon exemple.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

32

Bah ce dont tu ne tiens pas compte pour le DTD/XSD, c'est juste qu'en réalité le XML n'est qu'un format générique qui n'a aucune signification, une sémantique très basique, et une seule aide à la vérification des erreurs, qui est cette redondance. Certains DTD, et en réalité la majorité des DTD (même "implicites") qui te serviront à représenter des données de manière non arborescente, font que tu ne pourras jamais avoir un cas où "<a><a></a></a>" est valide. Même pour ce qui est du XHTML, la règle générique est que tu peux tout mettre dans un bloc, et tu ne peux mettre dans un élément en-ligne que d'autres éléments en ligne, mais si tu suis bien le DTD (et tu es obligé pour être valide XHTML 1.0 ^^), en fin de compte tu ne peux quasiment avoir d'imbrication successives de la même balise que pour les div et les span (y'en a quelques autres mais je garde jamais ça en tête), ce qui réduit énormément le besoin de faire mieux niveau redondance, et fait que très souvent ça sera suffisant (mais pas toujours).
En fait là où ça ne sera pas suffisant, c'est là où tu vas exprimer une intention (i.e. pour du HTML, ou des règles en xml comme on en trouve avec fontconfig et hal sous linux) où dans une grande majorité des cas tu auras simplement fait une erreur de logique (i.e. tu as bien exprimé ce que tu voulais mais il ce trouve que tu voulais un truc mauvais, ou que tu n'as pas compris comment l'exprimer correctement), et parfois une erreur d'inattention. L'erreur de logique qui respecte la sémantique quoi qu'il en soit n'est jamais détectable qul que soit le langage, et tu peux rencontrer ce type de choses en XML que parce que le XML est vraiment très(trop) générique. (Merde j'aurai quand même fini par l'écrire T_T)
Et en fait pour les attributs rapport au DTD (et quand je dis DTD, ça pourrait être d'autres règles en plus où à la place d'un DTD comme en XAML par exemple ^^), en XHTML par exemple:
- class="toto", class est clairement de la sémantique, et "toto" a priori bien contenu (on a aucune idée de ce que peux valoir class)
- lang="fr", le tout est considérable comme de la sémantique (les valeurs autorisées sont spécifiées quelque part)
- checked="checked", le tout est plutôt du contenu que de la sémantique (l'attribut n'a qu'une seule valeur autorisée [+ absence de valeur], il ne contient rien, il "est" son contenu)
Et pour les erreurs, garde à l'esprit "possible d'être écrit par un humain", on ne va clairement pas demander à un humain de calculer la somme de contrôle de ses données, c'est pas son boulot grin
sinon je suis entièrement d'accord sur le fait que pour un document totalement valide (avec des fermetures balises explicites donc redondance), spécifier le nom de la balise fermée ou non, ne change strictement rien. Mais dans d'autre cas, un document sera considéré valide avec des </> (à juste titre ou non, ça pourrait laisser passer des erreurs de manière "positive" comme "négative") alors que rédigé avec redondance on détecterait une ou des erreurs.
Un autre truc qui me tient plus à coeur, c'est une erreur conne que tu pourrais sans trop de problèmes faire: <tag att1="toto" att2="titi" /><!-- Tiens j'ai pas dormi, à cause de ça je vais oublier que je viens de fermer cette balise --></tag>. Avec la version redondante l'erreur est identifiée tôt, directement, et clairement. (Tiens oui, voilà un argument: la redondance permet de détecter les erreurs tôt, quand tu lis (a priori toujours) le xml de manière linéaire happy ) Avec la version sans redondance heuuu <tag [...]/></> ben dans le meilleur des cas tu auras un mauvais nombre de balises, et le DTD pourra *peut-être* t'apporter des informations complémentaires sur la validité/à(avant) quel endroit à peu près se situe l'erreur. Après ce n'est un gros problème que dans le cas où tu échanges des données. (Si c'est pour exporter un webservice par exemple, ça va faire un bug bête et méchant quand tu vas essayer de te connecter, rien de très grave, mais si c'est pour échanger la liste des utilisateurs de "truc" les conséquences peuvent être plus ou moins graves (tu pourrais révéler des mdp ou leur md5...))

Bon voilà un beau bloc de texte (c'est malin tiens sad )
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

33

J'ai absolument pas compris le rapport entre tout le début de ton post et le problème dont il est question dans ce topic (c'est pas de la mauvaise foi hein, c'est vrai et ça a du sens, mais je ne comprends juste pas du tout ce que ça vient faire ici).

Je rebondis juste sur la deuxième partie puisque là je vois un lien :
Tiens oui, voilà un argument: la redondance permet de détecter les erreurs tôt, quand tu lis (a priori toujours) le xml de manière linéaire happy

J'ai déjà répondu 50 fois à ça dans ce topic (mais lisez-le à la fin ! en à peine 2 pages ça doit être la 4eme fois que je me répète sad). Oui la redondance permet de détecter les erreurs. Non le choix d'avoir introduit une (et une seule) redondance dans le XML n'est pas forcément justifié (ou en tout cas je ne connais pas la justification et personne ici ne l'a apportée jusqu'à présent), quand on aurait pu en imaginer zéro ou bien plus qu'une seule.

Pour les prochains qui répondent, svp, lisez tous les posts en entier. Il y a eu des réponses intéressantes jusqu'ici, mais vous ne pouvez pas savoir à quel point c'est gavant de voir quelqu'un débarquer et exposer un point qui montre clairement qu'il a complètement zappé tout ce que vous avez passé du temps à écrire. Et puis c'est assez vexant, aussi...

Plus spécifiquement pour toi GoldenCrystal, stp, aère tes posts, ton ./32 est à la limite du lisible ^^
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

34

C'est pas le fait de détecter les erreurs que je mettais en valeur c'est le fait de le faire tôt embarrassed (genre si tu lisais un énorme fichier XML sur un flux réseau et qu'il y avait une erreur dedans - ce qui est improbable et très con sad)
Mais y'a jamais de justification complète à aucune vérification d'erreur hein, t'as juste différents degrés, et il se trouve que vu la généralité et la simplicité du XML (ce que j'essayais de dire sans doute très maladroitement), et si tu comptes garder le format en balises (sinon t'as le JSON/YAML #lourd#) ce niveau de redondance est le maximum acceptable, donc soit tu le met soit tu le met pas. Oui c'est jamais 100% justifiable (comme un MD5 sur un fichier, qui te garantit juste que le fichier est bien celui que l'auteur à mis, mais te granatit en aucun cas que le contenu est celui que tu veux), ils auraient sans doute pu proposer en plus un format XML réduit avec des </> pour quand tu t'en fous des erreurs potentielles et que tu veux économiser quelques octets ou ralentir l'usure de ton clavier.
Bref c'est pour ça que je voulais pas en faire un paté, donc, désolé de te faire perdre ton temps grin
Et le topic je l'avais lu, mais un peu trop vite sans aucun doute, et quand j'y ai répondu certains bouts s'étaient déjà volatilisés de ma mémoire à moyen terme
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

35

GoldenCrystal (./34) :
genre si tu lisais un énorme fichier XML sur un flux réseau et qu'il y avait une erreur dedans

Ah c'est loin d'être con comme justification, en effet...
avatar

36

GoldenCrystal (./34) :
C'est pas le fait de détecter les erreurs que je mettais en valeur c'est le fait de le faire tôt embarrassed (genre si tu lisais un énorme fichier XML sur un flux réseau et qu'il y avait une erreur dedans - ce qui est improbable et très con sad)

C'est pas faux comme remarque, à ceci près que les énormes flux XML ça doit pas courir les rues je pense ? Ça n'est qu'un avis perso, mais comme le XML permet de transporter essentiellement des données textes (avec quelques éventuelles insertions de binaire mais c'est pas le but de ce format), je pense qu'en moyenne les flux sont très courts. Du coup, détecter une erreur avant la fin d'un fichier de 200ko (et encore, 200ko pour un XML c'est déjà gros) n'est pas forcément un gain énorme. Ça reste un argument valable mais plus dans la théorie que dans la pratique à mon avis.
vu la généralité et la simplicité du XML [...] et si tu comptes garder le format en balises [...] ce niveau de redondance est le maximum acceptable

Ah, là tu m'intéresses ^^ Je n'ai pas osé émettre cette hypothèse parceque ça me semble très subjectif comme affirmation. Qu'est-ce qui te fait dire que c'est le meilleur compromis entre robustesse et légèreté ? (je dis pas que c'est pas le cas, juste que ça me semble pas évident à affirmer)
Bref c'est pour ça que je voulais pas en faire un paté, donc, désolé de te faire perdre ton temps grin

Y'a pas de mal, tu as passé du temps aussi pour répondre, et si j'ai fait un topic c'est pour savoir ce qu'en pensent les gens ^^

(mais savoir ce qu'ils pensent m'intéresse déjà beaucoup moins si ça implique de poser 15 fois les mêmes questions parcequ'ils prennent la discussion en cours de route sans se donner la peine de lire le début tongue)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

37

GoldenCrystal (./30) :
Les balises (nom de balise) c'est de la sémantique, et les attributs (plus souvent leur contenu, moins souvent le nom, mais c'est variable) c'est du contenu
Bah non, les balises c'est de la syntaxe, et les attributs c'est des métadonnées (enfin en théorie, tu as des formats XML qui utilisent les attributs pour mettre du contenu mais c'est pas censé être leur usage)

Edit : après avoir lu (mais pas vraiment compris cheeky) le ./32, je me demande ce que tu appelles « sémantique » ? parce que ça a pas l'air d'être la même chose que moi ^^
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

38

pourquoi tu te poses cette question bob? si ca t'embete d'ecrire les balises de fin ca doit etre assez simple de faire une moulinette qui convertit du bobxml avec des </> en vrai xml hein smile
avatar
I'm on a boat motherfucker, don't you ever forget

39

non non, simple curiosité ; si je devais lire et/ou écrire des fichiers XML je prendrais l'un des nombreux outils qui font ça très bien et avec les bonnes balises.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

40

Zephyr (./29) :
<balise attribut1="valeur1" attribut2="valeur2">
    <inner>Contenu</inner>
</balise attribut1="valeur1" attribut2="valeur2">


En meme temps c'est idiot, répéter les attributs ok, mais les données des attributs.. Tu veux pas repeter les données entre les tags aussi ?
<balise@68ce89 attribut1="valeur1" attribut2="valeur2">
    <inner@965f7a>Contenu</inner>
</balise>

Et ton CRC tu le calcule a la main? le XML est fait pour etre lisible a la main et tapable a la main sans demander de faire des calculs scientifiques et 15ans d'etude (oui j'exagere un peu)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

41

déjà répondu, lis les posts précédents...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

42

Oui enfin les pavés voila quoi wink
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

43

Ce topic va devenir collector dans la catégorie « write-only » cheeky
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

44

./42 : bah oui mais si tout le monde se met à poster sans prendre la peine de lire ce qui a été dit avant, le topic peut tourner en boucle pendant longtemps... (et sans risque de voir une contribution utile arriver)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

45

Personnellement, comme GC, cette redondance me paraît pas mal pour un langage qui soit à la fois destiné aux hommes et aux machines :
- quand on écrit du XML à la main, c'est quand même super pratique d'avoir ces balises fermantes pour ne pas trop perdre les pédales quand on en enchaîne un certain nombre (même si ça reste limité),
- rajouter une redondance sur d'autres données (attribut ou contenu) aurait été vraiment chiant (ça impliquerait plein de copiés-collés à faire, alors qu'il n'est pas trop chiant de réécrire les balises à la main vu qu'elles sont en générales courtes,
- une redondance possible aurait été d'imposer l'attribut id et le répéter dans les balises fermantes, mais bon, ça aurait imposé son existence cheeky
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

46

concernant le point n°2, toi je sens que tu n'as jamais eu besoin d'écrire des fichiers XML avec des namespaces un peu foireux grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)