Разрешены ли разрывы строк в значениях атрибутов XML?
-
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.... " />
Но у нас есть наш собственный анализатор XML, и я хотел бы знать, разрешен ли первый пример в правильно сформированном XML.
Решение
http://www.w3.org/TR/REC-xml/#NT-AttValue
Кажется, говорит все , кроме <
, &
, и ваш разделитель ('
или "
) все в порядке.Так что новая строка тоже должна быть такой.
Другие советы
Это разрешено, однако в соответствии с рекомендацией W3C ваш анализатор XML должен нормализовать все пробельные символы до пробела (0x20) - так что выходные данные ваших примеров будут отличаться (у вас должна быть новая строка на выходе для " ", но только пробел в первом случае).
Только .NET:Если вы не уверены, является ли целевая строка допустимым xml-атрибутом (и предоставляете значение этого атрибута с помощью кода), вы всегда можете использовать Элемент безопасности.Побег функция для экранирования недопустимых символов.
Согласно описанию этой функции, единственными недопустимыми символами являются:
<
, >
, &
, '
, "
И это означает (как писали мои предшественники), что новая строка должна быть в порядке.
Да, первый пример является допустимым.