Разрешены ли разрывы строк в значениях атрибутов XML?

StackOverflow https://stackoverflow.com/questions/449627

  •  19-08-2019
  •  | 
  •  

Вопрос

Я понимаю, что это не элегантно и не желательно, но разрешено ли (в правильно сформированном XML), чтобы значение атрибута в XML-элементе занимало несколько строк?

например ,

<some-xml-element value="this value goes over....
multiple lines!" />

Да, я понимаю, что есть лучшие способы написать это.Лично я бы написал это так:

<some-xml-element>
<value>this value goes over...
multiple lines!</value>
</some-xml-element>

или:

<some-xml-element value="this value goes over....&#13;&#10;" />

Но у нас есть наш собственный анализатор XML, и я хотел бы знать, разрешен ли первый пример в правильно сформированном XML.

Это было полезно?

Решение

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

Кажется, говорит все , кроме <, &, и ваш разделитель (' или ") все в порядке.Так что новая строка тоже должна быть такой.

Другие советы

Это разрешено, однако в соответствии с рекомендацией W3C ваш анализатор XML должен нормализовать все пробельные символы до пробела (0x20) - так что выходные данные ваших примеров будут отличаться (у вас должна быть новая строка на выходе для " ", но только пробел в первом случае).

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

Только .NET:Если вы не уверены, является ли целевая строка допустимым xml-атрибутом (и предоставляете значение этого атрибута с помощью кода), вы всегда можете использовать Элемент безопасности.Побег функция для экранирования недопустимых символов.

Согласно описанию этой функции, единственными недопустимыми символами являются:

<, >, &, ', "

И это означает (как писали мои предшественники), что новая строка должна быть в порядке.

Да, первый пример является допустимым.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top