Schémas XSD autorisant des caractères spéciaux / réservés dans une balise d'élément de chaîne
Question
Dans une balise d'élément de chaîne, l'analyseur XML recevra confuse s'il trouve les caractères suivants
'
"
<
>
& amp;
(c'est-à-dire, disons que le nom de la société a été extrait d'un champ de base de données et se présente comme suit: & "Smith & et Sons &";)
La question est la suivante: comment pouvez-vous concevoir votre XSD pour ignorer ces caractères s’ils se trouvent dans un élément?
La solution
Vous ne pouvez pas lui faire ignorer ces caractères.
Ils sont invalides en XML et doivent donc être échappés ou encapsulés dans des sections CDATA. Il n’existe aucun moyen pour ces caractères d’apparaître en XML à moins que ne le construisiez pas de façon appropriée (à savoir: concaténation de chaînes).
Si vous construisez votre code XML en utilisant les moyens appropriés (une bibliothèque XML de certaines sortes), ces caractères sont remplacés par leurs équivalents échappés au format XML de manière transparente et aucun analyseur ne se plaindra.
Autres conseils
La réponse est que vous n'en avez pas.
Le créateur du contenu XML doit les placer dans les sections CDATA.
Si vous extrayez " Smith & amp; Fils & Quot; de la base de données, il devrait être échappé lorsqu’il est inséré dans votre XML
par exemple. ce qui précède deviendra 'Smith & amp; amp; Fils de
De même pour les autres caractères ci-dessus.
La façon dont cela se produit dépend de la manière dont vous créez votre contenu XML. Si vous utilisez une API telle que DOM, cela devrait se faire automatiquement. Si vous assemblez votre XML à la main, vous devez vous en préoccuper (ainsi que d’autres problèmes tels que le codage de caractères, ce qui signifie que l’utilisation d’une API est l’option préférable ici).