Разрешены ли разрывы строк в значениях атрибутов XML? - PullRequest
85 голосов
/ 16 января 2009

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

Ответы [ 4 ]

96 голосов
/ 16 января 2009

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

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

47 голосов
/ 18 ноября 2011

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

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

3 голосов
/ 15 ноября 2011

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

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

<, >, &, ', "

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

2 голосов
/ 16 января 2009

Да, первый пример верный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...