Percebo que não é elegante ou desejado, mas é permitido (em XML bem formado) que um valor de atributo em um elemento XML se estenda por várias linhas?
por exemplo
<some-xml-element value="this value goes over....
multiple lines!" />
Sim, eu sei que há maneiras melhores de escrever isso. Eu pessoalmente escreveria assim:
<some-xml-element>
<value>this value goes over...
multiple lines!</value>
</some-xml-element>
ou:
<some-xml-element value="this value goes over.... " />
Mas nós temos nosso próprio analisador XML e gostaria de saber se o primeiro exemplo é permitido em XML bem formado.
xml
xml-parsing
CodeAndCats
fonte
fonte
Respostas:
http://www.w3.org/TR/REC-xml/#NT-AttValue
Parece dizer tudo
<
, exceto ,&
e seu delimitador ('
ou"
) está OK. Portanto, nova linha também deve ser.fonte
É permitido, no entanto, de acordo com a recomendação do W3C, seu analisador XML deve normalizar todos os caracteres de espaço em branco para espaço (0x20) - então a saída de seus exemplos será diferente (você deve ter uma nova linha na saída para "& # 13; & # 10 ; ", mas apenas espaço no primeiro caso).
http://www.w3.org/TR/1998/REC-xml-19980210#AVNormalize
fonte
Somente .NET: Se você não tiver certeza se a string de destino é um atributo xml válido (e fornecer o valor desse atributo por meio do código), você sempre pode usar a função SecurityElement.Escape para escapar de caracteres inválidos.
De acordo com a descrição desta função, os únicos caracteres inválidos são:
<
,>
,&
,'
,"
E isso significa (como escreveram meus predecessores), essa nova linha deve estar OK.
fonte
Sim, o primeiro exemplo é válido.
fonte