Je me rends compte que ce n'est ni élégant ni souhaité, mais est-il permis (en XML bien formé) pour une valeur d'attribut dans un élément XML de s'étendre sur plusieurs lignes?
par exemple
<some-xml-element value="this value goes over....
multiple lines!" />
Ouais, je me rends compte qu'il y a de meilleures façons d'écrire ça. 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.... " />
Mais nous avons notre propre analyseur XML et j'aimerais savoir si le premier exemple est autorisé dans un XML bien formé.
xml
xml-parsing
CodeAndCats
la source
la source
Réponses:
http://www.w3.org/TR/REC-xml/#NT-AttValue
Semble tout dire sauf
<
,&
et votre délimiteur ('
ou"
) est OK. Donc, la nouvelle ligne devrait l'être aussi.la source
Cela est autorisé, mais selon la recommandation du W3C, votre analyseur XML doit normaliser tous les caractères d'espacement en espace (0x20) - de sorte que la sortie de vos exemples sera différente (vous devriez avoir une nouvelle ligne sur la sortie pour "& # 13; & # 10 ; ", mais uniquement de l'espace dans le premier cas).
http://www.w3.org/TR/1998/REC-xml-19980210#AVNormalize
la source
.NET uniquement: Si vous n'êtes pas sûr que la chaîne cible est un attribut XML valide (et que vous 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 invalides sont:
<
,>
,&
,'
,"
Et cela signifie (comme mes prédécesseurs l'ont écrit), que la nouvelle ligne devrait être OK.
la source
Oui, le premier exemple est valide.
la source