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....&#13;&#10;" />

Mas temos nosso próprio analisador XML e eu gostaria de saber se o primeiro exemplo é permitido em XML bem formado.

Foi útil?

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).

http://www.w3.org/tr/1998/rec-xml-19980210#avnormalize

.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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top