Начинает ли использовать CDATA прорывное изменение? - PullRequest
5 голосов
/ 21 мая 2010

Для взаимодействия с клиентским приложением мы используем XML-документы. То есть мы отправляем XML по HTTP и получаем ответный XML-документ таким же образом. Заказчик указал две XML-схемы, которые описывают формат запроса и ответа. Все работало нормально, пока однажды клиент не начал использовать разделы CDATA в ответном XML. Мы настроили наш анализатор без учета разделов CDATA, поэтому нам не удалось их интерпретировать.

Мой вопрос: кто здесь допустил ошибку? Я пытался найти ответ в стандартах XML, но я все еще не уверен. Я думаю, что я не могу прописывать использование или не использование CDATA в XSD, верно? Если это так, разве недостаточно договориться о XSD, но необходимо заключить отдельное соглашение о разделах CDATA? Или нужно быть готовым разбирать CDATA и обычный текст?

Меня интересуют как ваши личные взгляды, так и любые официальные заявления. Спасибо!

Ответы [ 2 ]

6 голосов
/ 21 мая 2010

Многие синтаксические анализаторы XML отделяют текст и CDATA, что вызывает сожаление. Ошибка была ваша: между обычными текстовыми блоками и CDATA нет семантической разницы, поэтому отправитель должен иметь возможность выбирать между ними в зависимости от потребностей текста.

Хорошая новость заключается в том, что адаптировать ваш код очень просто.

6 голосов
/ 21 мая 2010

CDATA является основной частью XML. Отказ от его поддержки означает, что синтаксический анализатор не работает (а не настоящий анализатор XML (который мог бы справиться с элементами, содержащими текст, CDATA, сущности, другие элементы, комментарии и т. Д. И т. Д.)).

Поскольку я упомянул это в комментарии к другому ответу, у меня теперь есть желание повторить это здесь. Не ожидание CDATA в XML похоже на не ожидание рыбы в море .

...