web-dev-qa-db-fra.com

Quels caractères sont invalides (sauf s'ils sont encodés) dans un attribut XML?

Je n'arrive pas à croire que je ne trouve pas ces informations facilement accessibles, alors:

1) Quels caractères ne peuvent pas être incorporés dans un attribut XML sans les coder par entité?

De toute évidence, vous devez coder les guillemets. Qu'en est-il de < et >? Quoi d'autre?

2) Où se trouve exactement la liste officielle?

46
Euro Micelli

Voici la définition de ce qui est autorisé dans une valeur d'attribut .

'"' ([^<&"] | Reference)* '"'  |  "'" ([^<&'] | Reference)* "'" 

Donc, vous ne pouvez pas avoir:

  • le même caractère qui ouvre/ferme la valeur d'attribut ( soit ' ou ")
  • une esperluette nue (& doit être &amp;)
  • une équerre gauche (< doit être &lt;)

Vous ne devez pas non plus utiliser de caractères qui ne sont tout à fait légaux nulle part dans un document XML (comme les flux de formulaires, etc.).

51
great_llama

Selon le (2) recommandation actuelle , en particulier en ce qui concerne données de caractères et balisage , ce sont (1) l'esperluette (&), l'équerre gauche (<), l'angle droit (>) et les guillemets simples (') et les guillemets doubles (").

5
codehead

Voir 2.2 caractères dans "Extensible Markup Language (XML) 1.0 (Third Edition)" .

Notez que, au moins avec .NET, si vous utilisez les API XML pour travailler avec XML, vous n'aurez pas à vous en préoccuper. C'est la raison pour ne pas traiter XML comme du texte.

1
John Saunders