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

Я понимаю, что это не изящно или желательно, но разрешено ли (в хорошо сформированном 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.

Ответ 1

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

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

Ответ 2

Разрешено, однако, согласно рекомендации W3C, ваш XML-парсер должен нормализовать все пробельные символы в пространстве (0x20) - поэтому вывод ваших примеров будет отличаться (у вас должна быть новая строка для вывода для "& # 13 & # 10;", но только пространство в первом случае).

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

Ответ 3

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

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

<, >, &, ', "

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

Ответ 4

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