web-dev-qa-db-fra.com

Les sauts de ligne dans les valeurs d'attribut XML sont-ils autorisés?

Je me rends compte que ce n'est pas élégant ou souhaité, mais est-il autorisé (en XML bien formé) qu'une valeur d'attribut dans un élément XML s'étende sur plusieurs lignes?

par exemple.

<some-xml-element value="this value goes over....
multiple lines!" />

Oui, je me rends compte qu'il existe de meilleures façons d'écrire cela. Je l'écrirais personnellement comme:

<some-xml-element>
<value>this value goes over...
multiple lines!</value>
</some-xml-element>

ou:

<some-xml-element value="this value goes over....&#13;&#10;" />

Mais nous avons notre propre analyseur XML et j'aimerais savoir si le premier exemple est autorisé en XML bien formé.

85
CodeAndCats

http://www.w3.org/TR/REC-xml/#NT-AttValue

Semble tout dire sauf <, & et votre délimiteur (' ou ") vont bien. Donc, la nouvelle ligne devrait l'être aussi.

96
derobert

Il est autorisé, mais selon la recommandation du W3C, votre analyseur XML devrait normaliser tous les caractères d'espacement en espace (0x20) - ainsi la sortie de vos exemples différera (vous devriez avoir une nouvelle ligne sur la sortie pour "# 13; # 10;" , mais seulement de l'espace dans le premier cas).

http://www.w3.org/TR/1998/REC-xml-19980210#AVNormalize

48
Jan Cetkovsky

.NET uniquement: si vous n'êtes pas sûr si la chaîne cible est un attribut xml valide (et fournissez la valeur de cet attribut via le code), vous pouvez toujours utiliser la fonction SecurityElement.Escape pour échapper les caractères non valides.

Selon la description de cette fonction, les seuls caractères non valides sont:

<, >, &, ', "

Et cela signifie (comme mes prédécesseurs l'ont écrit), cette nouvelle ligne devrait être OK.

3
Łukasz Wiatrak

Oui, le premier exemple est valide.

2
Reji