2010-05-12 25 views
1

Je suis tombé sur un problème de gestion des caractères \ line-feed et \ carriage-return dans xml. Je sais que, selon http://www.w3.org/TR/REC-xml/#sec-line-ends, les processeurs xml doivent remplacer "\ n \ r" ou "\ r" par "\ n".
La spécification stipule que cela doit être le comportement pour gérer toute "entité analysée externe", cela s'applique-t-il également aux sections CDATA à l'intérieur d'un élément?
merci,La spécification XML indique-t-elle que l'analyseur doit toujours n r convertir n, même lorsque n r apparaît dans une section CDATA?

Michele

Je suis sûr que la bibliothèque MSXML par exemple convertit tous les \ n \ r » ou seuls "" séquences à "\ r \ n", quel que soit leur être dans un CDATA

+0

+1 pour voir les spécifications –

Répondre

2

Je citerai une sentenc e de la section un lien vers (Souligné par l'auteur):

Pour simplifier les tâches d'applications, le processeur XML doit se comporter comme si elle normalisé tous les sauts de ligne dans les entités externes analysées (y compris l'entité document ) en entrée, avant en analysant, en traduisant à la fois la séquence de deux caractères #xD #xA et toute #xD qui n'est pas suivie par #xA à un seul caractère #xA.

Parce que le processeur XML fait cela avant l'analyse, il ne sait pas encore quelles parties du document sont des sections CDATA. Par conséquent, il fera le remplacement indépendamment des caractères se trouvant dans une section CDATA ou non.

Pour préserver de façon fiable ces caractères, ils doivent être écrits dans le document XML sous la forme 
 et 
.

1

Oui - "\ n \ r" ou "\ r" dans les sections CDATA doivent être remplacés par "\ n" pour qu'un processeur soit conforme Toutes les sections CDATA de votre document XML font partie de l'entité de document, qui est 'analysée' Vous pouvez trouver un exemple d'entité non analysée here