bonjour
je dois manipuler un XML (je ne connais pas du tout le XML) mais je souhaite intégrer le caractère & mais ca me génére une erreur (caractère réservé)
Comment dois je faire.
Merci
bonjour
je dois manipuler un XML (je ne connais pas du tout le XML) mais je souhaite intégrer le caractère & mais ca me génére une erreur (caractère réservé)
Comment dois je faire.
Merci
Je plussoieEnvoyé par fraoustin
![]()
Et pour aider notre ami débutant, voici les autres entités reconnues par XML :
- < -> "<" (lt = lower than = inférieur à = "<" )
- > -> ">" (gt = greater than = supérieur à = ">")
- & -> "&" (comme dit fraoustin - amp = ampersand)
- " -> " (quot = quotation mark = quillemet)
- ' -> ' (apos = apostrophe)
En XML, on doit bien sure échapper (englicisme) le caractère "<", mais contrairement à HTML, on doit aussi échapper le caractère ">" (comme ça, c'est plus consistent)
-- EDIT 07/08/2007: Non, on est pas toujours obligé(e) d'échapper le caractère ">". Voir le post n°5 à ce sujet.
FIN DE L'EDIT --
Les entités " et ', sont trés utiles pour dans les valeurs d'attributs (beh voui, sinon comment on ferait quand un attribut contient à la fois des " et des ')
Il faut donc retenir que < et > c'est pour le texte (pour échapper les caractère de balisage), et " et ' c'est pour les attributs (pour échapper les guillemet simple ou double) et & ben c'est pour échapper ce qui sert à échapperet promis, ça s'arrête là.
Les entités nomées (named entitie) indiquées ci-dessus, sont les seules à être reconnues en standard par XML (XML, n'est pas HTML). Pour pouvoir utiliser d'autres entitées dans un XML, il faut les introduire via une DTD (comme XHTML le fait par exemple), ou encore même qui peut être incluse dans le fichier.
Exemple :
Cet exemple est trés utile, parce que l'entité nbsp n'est pas reconnu en standard, alors qu'elle est pourtant souvent utilisée
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!DOCTYPE document [ <!ENTITY nbsp "*"> ]>
Note : il faut penser à changer « document » en ce qui convient à votre fichier XML (j'ai déjà essayer <!DOCTYPE * [ ... , mais ça ne marche pas)
-> On peut toute-fois utiliser à sa guise toutes les entités numérique, &#.... et &#x..., qui elles, ne nécéssitent aucune déclaration.
Au passage, je me demande s'il existe un nom standard pour l'entité 
 ... est-ce que quelqu'un(e) lui connais un nom ? eol ?![]()
Afin de ne pas rompre la validité d'un document XML, vous ne pouvez pas utiliser le caractère & tel quel au sein de votre texte
<livre>Java & XSLT</livre>
Incorrect
<livre>Java & XSLT</livre>
Notation spécial
<livre>Java &'#38; XSLT</livre> // Le &'#38; sans l’apostrophe (c’est une limitation ou protection du forum )
Notation ASCII
<livre><![CDATA[Java & XSLT]]</livre>
Ne pas interpréter ces caractères spéciaux
C'est quand ça remonte que je découvre une erreur. Je disais qu'il faut toujours échapper le ">", mais en fait il n'est nécéssaire de l'échapper que dans la chaîne "]]>", qui doit donc être écrite "]]&". On ne doit pas écrire "]]>", même si aucun "<![CDATA[" n'est présent. En d'autres termes, la marque "]]>" est en XML reconnue même en dehors des CDATA.
Oilà, l'erreur est corrigée.
Oops... ça n'est pas trés conseillé. Voir ce topic au sujet des problème que posent les sections CDATA : Ambiguïtés des sections CDATAEnvoyé par TnTech
Les sections CDATA n'apportent rien de plus que ce qui peut déjà être fait avec les échappement "&" et "<", qui ne sont pas trés difficiles à écrirLes section CDATA ne sont qu'un racourci pour s'épargner d'écrir des deux échappement, et ce racourci était surtout utile dans le passé, quand les éditeur n'étaient pas capable de les générer automatiquement. Mais même avec un vieux PC des année 1990 on en était plus là, alors l'usage des CDATA n'est vraiment pas justifié, ou alors si elles le sont, alors je veux bien connaitre un exemple.
ou aujourd'hui quand on construit dynamiquement un xml et qu'il est beaucoup moins couteux et plus sûr de placer une section de ce type que de reparser systématiquement la chaîne pour transformer ces caractèresEnvoyé par Hibou57
Partager