Si la spec avait créé une classe de caractère non significative, ça ne pourrait être que explicite. Je n'ai pas trouvé de passage informant de cela, et après la relecture, je ne crois pas qu'il existe.
J'ai par contre trouvé un passage qui dit explicitement l'inverse, qu'on ne peut pas aggréger, ignorer ou manipuler les espaces blancs (ce qu'on pourrait faire s'ils n'étaient pas significatifs).
> le fait de dire que sans hint supplémentaire au parseur le parseur
> doit délivrer les espaces à la couche du dessus ne veut rien dire pour
> le parser lui-même
Ah ben si, ça veut dire qu'il *doit* traiter ça de la même manière que n'importe quel autre caractère, sans le modifier, l'ignorer ou en créer d'inexistants. C'est quoi d'autre un caractère significatif pour toi ?
Faut voir à être cohérent. XML est une grammaire. Tu as trois options :
- le caractère est "pour lui" : typiquement les balises et caractères spéciaux
- le caractère est non significatif : on peut faire comme s'il n'était pas là
- le caractère est de la donnée : il faut le passer tel quel sans toucher au langage au dessus
La spec nous dit explicitement qu'on est dans le troisième. Avoir un MUST qui dit "on doit le renvoyer tel quel" est pour moi tout à fait opposé à dire "c'est non significatif".
Globalement la spec nous demande de traiter un espace comme tout autre caractère non spécial.
> Un document xml coalescé comparé au même document non
> coalescé/normalisé doit retourner l'égalité des 2 documents
Source de l'affirmation dans les specs ?
(hint: le terme coalesce n'apparait pas dans les specs)
Dire en même temps "tu es obligé de rapporter tout espace blanc exactement comme tu le trouves" et dire "deux documents, un avec l'espace et un sans, sont identiques" ça serait totalement contradictoire. Les specs XML sont à priori assez bien faites pour pas avoir laissé passer un truc aussi gros.
> Maintenant tu peux même indiquer au niveau d'un attribut sur la
> balise (xml:space) une indication sur ce qu'on fait du contenu
> 'espace'.
Oui, mais notes que ce n'est qu'une information pour la couche au dessus. Quel que soit la valeur de cet attribut, le processeur *doit* renvoyer les espaces trouvés sans les ignorer/tronquer/aggréger, et *doit* créer un noeud de contenu quand il les trouve même s'ils n'y a que ça.
Notes aussi que la valeur "default" est explicitement laissé à l'appréciation du langage au dessus et qu'il ne s'agit justement pas d'un mode où l'espace est non significatif pour XML lui-même.
[^] # Re: Huh ?
Posté par Éric (site web personnel) . En réponse au journal Libre Vs OpenSource. Évalué à 2.
Source dans les specs ?
Si la spec avait créé une classe de caractère non significative, ça ne pourrait être que explicite. Je n'ai pas trouvé de passage informant de cela, et après la relecture, je ne crois pas qu'il existe.
J'ai par contre trouvé un passage qui dit explicitement l'inverse, qu'on ne peut pas aggréger, ignorer ou manipuler les espaces blancs (ce qu'on pourrait faire s'ils n'étaient pas significatifs).
> le fait de dire que sans hint supplémentaire au parseur le parseur
> doit délivrer les espaces à la couche du dessus ne veut rien dire pour
> le parser lui-même
Ah ben si, ça veut dire qu'il *doit* traiter ça de la même manière que n'importe quel autre caractère, sans le modifier, l'ignorer ou en créer d'inexistants. C'est quoi d'autre un caractère significatif pour toi ?
Faut voir à être cohérent. XML est une grammaire. Tu as trois options :
- le caractère est "pour lui" : typiquement les balises et caractères spéciaux
- le caractère est non significatif : on peut faire comme s'il n'était pas là
- le caractère est de la donnée : il faut le passer tel quel sans toucher au langage au dessus
La spec nous dit explicitement qu'on est dans le troisième. Avoir un MUST qui dit "on doit le renvoyer tel quel" est pour moi tout à fait opposé à dire "c'est non significatif".
Globalement la spec nous demande de traiter un espace comme tout autre caractère non spécial.
> Un document xml coalescé comparé au même document non
> coalescé/normalisé doit retourner l'égalité des 2 documents
Source de l'affirmation dans les specs ?
(hint: le terme coalesce n'apparait pas dans les specs)
Dire en même temps "tu es obligé de rapporter tout espace blanc exactement comme tu le trouves" et dire "deux documents, un avec l'espace et un sans, sont identiques" ça serait totalement contradictoire. Les specs XML sont à priori assez bien faites pour pas avoir laissé passer un truc aussi gros.
> Maintenant tu peux même indiquer au niveau d'un attribut sur la
> balise (xml:space) une indication sur ce qu'on fait du contenu
> 'espace'.
Oui, mais notes que ce n'est qu'une information pour la couche au dessus. Quel que soit la valeur de cet attribut, le processeur *doit* renvoyer les espaces trouvés sans les ignorer/tronquer/aggréger, et *doit* créer un noeud de contenu quand il les trouve même s'ils n'y a que ça.
Notes aussi que la valeur "default" est explicitement laissé à l'appréciation du langage au dessus et qu'il ne s'agit justement pas d'un mode où l'espace est non significatif pour XML lui-même.