Какова причина, что CDATA даже существует?

Обычно с VTable, массивом указателей на функции.

11
задан Community 23 May 2017 в 12:13
поделиться

8 ответов

Разделы CDATA предназначены только для удобства авторов-людей, а не для программ. Их единственное назначение - дать людям возможность легко включать, например, пример кода SVG в страницу XHTML без необходимости тщательной замены каждого < на & lt; и так далее.

Это для меня предназначенное использование. Чтобы не уменьшать итоговый документ на несколько байтов, потому что вы можете использовать < вместо & lt; .

Также снова взяв образец сверху (код SVG в xhtml), он делает мне легко проверить исходный код файла XHTML и просто скопировать и вставить код SVG без повторной замены & lt; на <.

11
ответ дан 3 December 2019 в 02:40
поделиться

Я считаю, что CDATA был предназначен для разрешения необработанных двоичных данных: если он не содержит "]]>", тогда все будет помещено в раздел CDATA. Это отличает его от обычного XML и должно ускорить синтаксический анализ (и устранить необходимость в полнотекстовом кодировании, что дает второй прирост производительности). На самом деле это оказалось довольно проблематичным из-за того, что люди не избегали заключительной последовательности и несколько ранних парсеров были по-разному сломаны, поэтому большинство теперь просто используют текстовую кодировку для двоичных данных, что делает раздел CDATA несколько бессмысленным, да.

РЕДАКТИРОВАТЬ: обратите внимание, что этот ответ на самом деле неверен, как Томалак указывает в комментариях. Я не удалял его, потому что знаю, что есть другие люди, которые думают, что необработанные двоичные файлы приемлемы в CDATA, и это могло бы устранить это небольшое недоразумение.

4
ответ дан 3 December 2019 в 02:40
поделиться

Я не знаю, насколько это будет полезно, но я добавлю и это:

Одна из проблем заключается в том, что существует несколько разных лагерей разработчиков XML, где некоторые рассматривают XML как представление данных , а некоторые рассматривают его более ориентированным на документы способом. (Прелесть XML в том, что он хорошо работает для обоих.)

Те, кто рассматривает XML как представление данных, где XML часто создается и используется инструментами, а люди участвуют только для устранения неполадок, будут не видят особой ценности в разделе CDATA, потому что он не имеет значения для их инструментов, тогда как те, кто использует XML для более документально-ориентированных целей, могут найти разделы CDATA гораздо более полезными.

3
ответ дан 3 December 2019 в 02:40
поделиться

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

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

Создать оболочку XML
Преобразование данных в XML
Поместите данные в оболочку
Отправить XML получателю
Разделить XML на XML + данные в XML
Преобразование данных из XML в данные

В то время как использование CDATA не потребовало бы дополнительных шагов преобразования.

Другим вариантом использования может быть встраивание данных без необходимости заботиться о различных пространствах имен во встроенных данных. Но на самом деле это не лучший способ его использования.

Я нашел еще один пример хорошего способа использования CDATA, о котором мне следовало подумать. Это тот случай, когда вам нужно встроить код в XML-файл, код не должен быть преобразован или он не будет работать и / или будет трудно читаемым.

3
ответ дан 3 December 2019 в 02:40
поделиться

MXML демонстрирует отличное использование тегов CDATA. Что мне нравится в MXML, так это то, что это действительный XML, что означает, что я могу делать полезные вещи, например генерировать флеш-виджеты программно из другого XML-файла с помощью преобразования и проверять MXML на соответствие схеме.

Теги CDATA полезны в MXML, поскольку они определяют блок сценария ActionScript в файле MXML, что позволяет мне комбинировать язык сценариев типа ECMA (с> и <и т.п.) и действительный XML в одном файле.

] РЕДАКТИРОВАТЬ:

Я полагаю, что еще одним вариантом объединения MXML и ActionScript было бы их объединение таким же образом, как вы объединяете HTML и Javascript, а именно заключить сценарий в тег комментария XML внутри блока сценария и выбрать использование CDATA вместо этого было сделано разработчиками компилятора MXML. Я полагаю, что причина, вероятно, больше связана с редактированием, поскольку редактор MXML проверяет ваш код на соответствие схеме, чтобы проверить синтаксис и предоставить контекстную справку, а также проанализировать ваш код ActionScript для синтаксиса и контекстной справки. Использование CDATA в редакторе позволяет делать и то, и другое, а также различать XML-комментарии и блоки сценария.

2
ответ дан 3 December 2019 в 02:40
поделиться

В случае сомнений проверьте спецификацию :

2.7 Разделы CDATA

[Определение: разделы CDATA могут встречаться везде, где могут встречаться символьные данные; они используются для экранирования блоков текста, содержащих символы, которые иначе были бы распознаны как разметка.

2
ответ дан 3 December 2019 в 02:40
поделиться

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

Мне часто приходится работать с устаревшими системами, которые имеют выходные данные HTML, которые часто не являются правильно сформированным XHTML, Я могу прикрепить схему, которая гарантирует, что XML структурирован правильно, но имеет тег, который просто содержит раздел CDATA для размещения потенциально плохого HTML в CDATA.

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

1
ответ дан 3 December 2019 в 02:40
поделиться

PCDATA - проанализированные символьные данные, что означает, что введенные данные будут проанализированы анализатором.

CDATA - данные, введенные между элементами CDATA, не будут анализироваться парсером. То есть текст внутри раздела CDATA будет проигнорирован парсером. в результате злоумышленник может отправить разрушающие данные в приложение, используя эти элементы CDATA.

Раздел CDATA начинается с и заканчивается на ]]> .

Единственная строка, которая не может встречаться в CDATA, - это ]]> .

Единственная причина, по которой мы используем CDATA: такой текст, как код Javascript, содержит много <, & символов. Чтобы избежать ошибок, код сценария может быть определен как CDATA, потому что использование только < приведет к ошибке, as синтаксический анализатор интерпретирует его как начало нового элемента. Аналогичным образом & может интерпретироваться синтаксическим анализатором как начало символьной сущности.

5
ответ дан 3 December 2019 в 02:40
поделиться
Другие вопросы по тегам:

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