Pregunta

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 así:

<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;" />

Pero tenemos nuestro propio analizador XML y me gustaría saber si el primer ejemplo está permitido en XML bien formado.

¿Fue útil?

Solución

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

Parece decirlo todo excepto <, &, y su delimitador (' o ") están bien.Entonces la nueva línea también debería serlo.

Otros consejos

Está permitido, sin embargo, de acuerdo con la recomendación del W3C, su analizador XML debería normalizar todos los espacios en blanco al espacio (0x20), por lo que la salida de sus ejemplos será diferente (debe tener una nueva línea en la salida para " & amp; # 13; & amp; # 10; " ;, pero solo espacio en el primer caso).

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

.NET solamente: Si no está seguro de si la cadena de destino es un atributo xml válido (y proporciona el valor de este atributo a través del código), siempre puede usar Función SecurityElement.Escape para escapar de caracteres no válidos.

Según 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.

Sí, el primer ejemplo es válido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top