son - ¿Se permiten saltos de línea en los valores de atributo XML?
html en español (4)
Me doy cuenta de que no es elegante ni deseado, pero ¿está permitido (en XML bien formado) que un valor de atributo en un elemento XML abarque varias líneas?
p.ej
<some-xml-element value="this value goes over....
multiple lines!" />
Sí, me doy cuenta de que hay mejores formas de escribir eso. Yo personalmente lo escribiría como:
<some-xml-element>
<value>this value goes over...
multiple lines!</value>
</some-xml-element>
o:
<some-xml-element value="this value goes over.... " />
Pero tenemos nuestro propio analizador XML y me gustaría saber si el primer ejemplo está permitido en XML bien formado.
Está permitido, sin embargo, de acuerdo con la recomendación W3C, su analizador XML debe normalizar todos los espacios en blanco al espacio (0x20), por lo que la salida de los ejemplos será diferente (debe tener una nueva línea en la salida para "& # 13; & # 10 ; ", pero solo espacio en el primer caso)
Sí, el primer ejemplo es válido.
Sólo .NET: si no está seguro de si la cadena objetivo es un atributo xml válido (y proporcione el valor de este atributo mediante el código), siempre puede usar SecurityElement.Escape función SecurityElement.Escape para escapar de los caracteres no válidos.
De acuerdo con la descripción de esta función, los únicos caracteres no válidos son:
<
, >
, &
, ''
, "
Y esto significa (como escribieron mis predecesores), que la nueva línea debería estar bien.
http://www.w3.org/TR/REC-xml/#NT-AttValue
Parece que todo excepto <
, &
, y su delimitador ( ''
o "
) son correctos. Así que la nueva línea debería ser también.