Как сохранить новые строки в атрибуте XML?

Я должен сохранить содержание что содержащий новые строки в некоторых атрибутах XML, не текст. Метод должен быть выбран так, чтобы я был в состоянии декодировать его в XSLT 1.0/ESXLT/XSLT 2.0

Каков лучший метод кодирования?

Предложите/дайте некоторые идеи.

56
задан David Hall 5 January 2010 в 05:47
поделиться

2 ответа

В совместимом DOM API ничего не нужно делать. Просто сохраните актуальные символы новой строки в атрибуте, API самостоятельно правильно их закодирует (см. Canonical XML spec, раздел 5.2).

Если Вы сделаете свою собственную кодировку (т.е. замените \n на перед сохранением значения атрибута), API снова закодирует Ваш ввод , в результате чего в XML-файле появится 
.

В итоге, значение строки сохраняется дословно. Вы получаете то, что вставили, не нужно вмешиваться.

Однако... некоторые реализации не совместимы. Например, они кодируют символы & в значения атрибутов, но забывают о символах новой строки или табуляции. Это ставит Вас в проигрышную позицию, так как Вы не можете просто заменить новую строку на заранее.

Эти реализации сохранят символы новой строки некодированными, например:

<xml attribute="line 1
line 2" />

При разборе такого документа буквальные новые строки в атрибутах нормализуются в единое пространство (опять же, в соответствии со спецификацией) - и, таким образом, они теряются.

Сохранение (и удержание!) новых строк в атрибутах в этих реализациях невозможно.

73
ответ дан 26 November 2019 в 17:18
поделиться

Вы можете использовать сущность для представления новой строки в атрибуте XML. можно использовать для представления возврата каретки. CRLF в стиле windows может быть представлен как .

Это легальный синтаксис XML. См. Спецификация XML для получения более подробной информации.

.
41
ответ дан 26 November 2019 в 17:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: