Я понимаю, что это не изящно и нежелательно, но разрешено ли (в правильно сформированном 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.
xml
xml-parsing
CodeAndCats
источник
источник
Ответы:
http://www.w3.org/TR/REC-xml/#NT-AttValue
Кажется, говорит все, кроме
<
,&
и ваш разделитель ('
или"
) в порядке. Так должна быть и новая строка.источник
Это разрешено, однако в соответствии с рекомендацией W3C ваш XML-анализатор должен нормализовать все пробельные символы до пробела (0x20), поэтому вывод ваших примеров будет отличаться (у вас должна быть новая строка на выходе для "& # 13; & # 10 ; ", но только пробел в первом случае).
http://www.w3.org/TR/1998/REC-xml-19980210#AVNormalize
источник
Только .NET: если вы не уверены, является ли целевая строка допустимым атрибутом xml (и укажите значение этого атрибута с помощью кода), вы всегда можете использовать SecurityElement.Escape функцию чтобы избежать недопустимых символов.
Согласно описанию этой функции единственными недопустимыми символами являются:
<
,>
,&
,'
,"
А это означает (как писали мои предшественники), что новая строка должна быть в порядке.
источник
Да, первый пример верен.
источник