Question

Je réalise que ce n'est pas élégant ou souhaité, mais est-il autorisé (dans un XML bien formé) de définir une valeur d'attribut dans un élément XML sur plusieurs lignes?

par exemple

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

Oui, je réalise qu'il y a de meilleures façons d'écrire ça. Personnellement, je l’écrirais 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é dans un XML bien formé.

Était-ce utile?

La solution

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

Il semble que tout soit dit sauf que <, & et votre délimiteur (' ou ") soient corrects. Donc, newline devrait l'être aussi.

Autres conseils

Cela est autorisé, cependant, conformément aux recommandations du W3C, votre analyseur XML doit normaliser tous les caractères d'espacement (0x20). Ainsi, le résultat de vos exemples sera différent (vous devriez avoir une nouvelle ligne pour " & amp; # 13; & amp; # 10; " ;, mais seulement de l’espace dans le premier cas).

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

.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 SecurityElement.Escape pour échapper des caractères non valides.

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

<, >, &, ', "

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

Oui, le premier exemple est valide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top