Domanda

Mi rendo conto che non è elegante o desiderato, ma è consentito (in XML ben formato) che un valore di attributo in un elemento XML si estenda su più righe?

per es.

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

Sì, mi rendo conto che ci sono modi migliori per scriverlo. Personalmente lo scriverei come:

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

o

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

Ma abbiamo il nostro parser XML e vorrei sapere se il primo esempio è consentito in XML ben formato.

È stato utile?

Soluzione

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

Sembra dire tutto tranne <, & e il delimitatore (' o ") sono OK. Quindi anche Newline dovrebbe essere.

Altri suggerimenti

È consentito, tuttavia secondo la raccomandazione del W3C il tuo parser XML dovrebbe normalizzare tutti i caratteri degli spazi bianchi nello spazio (0x20) - quindi l'output dei tuoi esempi sarà diverso (dovresti avere una nuova riga nell'output per " & amp; # 13; & amp; # 10; " ;, ma solo spazio nel primo caso).

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

Solo .NET: Se non sei sicuro che la stringa di destinazione sia un attributo xml valido (e fornisci il valore di questo attributo tramite codice), puoi sempre utilizzare SecurityElement.Escape per evitare caratteri non validi.

Secondo la descrizione di questa funzione, gli unici caratteri non validi sono:

<, >, &, ', "

E questo significa (come hanno scritto i miei predecessori), che la nuova riga dovrebbe essere OK.

Sì, il primo esempio è valido.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top