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.... " />
Pero tenemos nuestro propio analizador XML y me gustaría saber si el primer ejemplo está permitido en XML bien formado.
xml
xml-parsing
CodeAndCats
fuente
fuente
Respuestas:
http://www.w3.org/TR/REC-xml/#NT-AttValue
Parece decir todo excepto
<
,&
y su delimitador ('
o"
) está bien. Así que la nueva línea también debería serlo.fuente
Está permitido, sin embargo, de acuerdo con la recomendación del W3C, su analizador XML debe normalizar todos los caracteres de espacio 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 "& # 13; & # 10 ; ", pero solo espacio en el primer caso).
http://www.w3.org/TR/1998/REC-xml-19980210#AVNormalize
fuente
Solo .NET: 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 la función SecurityElement.Escape para escapar de los caracteres no válidos.
Según la descripción de esta función, los únicos caracteres inválidos son:
<
,>
,&
,'
,"
Y esto significa (como escribieron mis predecesores), que la nueva línea debería estar bien.
fuente
Sí, el primer ejemplo es válido.
fuente