As quebras de linha nos valores de atributo XML são permitidas?
-
19-08-2019 - |
Pergunta
Sei que não é elegante ou desejado, mas é permitido (em XML bem formado) para um valor de atributo em um elemento XML para abranger várias linhas?
por exemplo
<some-xml-element value="this value goes over....
multiple lines!" />
Sim, eu percebo que existem maneiras melhores de escrever isso. Eu pessoalmente escreveria como:
<some-xml-element>
<value>this value goes over...
multiple lines!</value>
</some-xml-element>
ou:
<some-xml-element value="this value goes over.... " />
Mas temos nosso próprio analisador XML e eu gostaria de saber se o primeiro exemplo é permitido em XML bem formado.
Solução
http://www.w3.org/tr/rec-xml/#nt-attvalue
Parece dizer tudo, exceto <
, &
, e seu delimitador ('
ou "
) estão bem. Então a Newline também deve ser.
Outras dicas
É permitido, no entanto, de acordo com a recomendação do W3C, seu analisador XML deve normalizar os caracteres de espaço em branco para o espaço (0x20) - para que a saída de seus exemplos seja diferente (você deve ter uma nova linha na saída para "", mas apenas o espaço no primeiro caso).
.NET SOMENTE: Se você não tem certeza se a string de destino é um atributo XML válido (e forneça o valor deste atributo via código), sempre pode usar SecurityElement.escape função 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 meus antecessores escreveram), essa nova linha deve estar bem.
Sim, o primeiro exemplo é válido.