Подтвердить что ты не робот

Разница между PCDATA и CDATA в DTD

В чем разница между #PCDATA и #CDATA в DTD?

4b9b3361

Ответ 1

PCDATA - анализируемые данные символов

Анализаторы XML обычно анализируют весь текст в XML-документе.

Данные о символах CDATA - (Unparsed)

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

Такие символы, как "<" и "&" являются незаконными в элементах XML.

Ответ 2

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

По умолчанию все это PCDATA. В следующем примере игнорируется корень, <bar> будет проанализирован, и у него не будет контента, кроме одного ребенка.

<?xml version="1.0"?>
<foo>
<bar><test>content!</test></bar>
</foo>

Когда мы хотим указать, что элемент будет содержать только текст, а не дочерние элементы, мы используем ключевое слово PCDATA, потому что это ключевое слово указывает, что элемент должен содержать анализируемые символьные данные - то есть любой текст, кроме символов, чем (<), больше, чем ( > ), амперсанд (&), цитата (') и двойная кавычка (").

В следующем примере <bar> содержит CDATA. Его содержимое не будет анализироваться и, таким образом, <test>content!</test>.

<?xml version="1.0"?>
<foo>
<bar><![CDATA[<test>content!</test>]]></bar>
</foo>

В SGML существует несколько моделей контента. Модель содержимого #PCDATA говорит, что элемент может содержать простой текст. "Разработанная" часть означает, что разметка (включая PI, комментарии и SGML-директивы) в ней анализируется вместо отображения в качестве исходного текста. Это также означает, что ссылки на сущности заменяются.

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

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

В DTD тип атрибута, который содержит текст, должен быть CDATA. Ключевое слово CDATA в объявлении атрибута имеет другое значение, чем раздел CDATA в документе XML. В разделе CDATA все символы являются законными (включая <, > , &, и "characters" ), за исключением тега "]] > " end.

#PCDATA не подходит для типа атрибута. Он используется для типа текста "листа".

#PCDATA добавляется хешем просто по историческим причинам.

Ответ 3

Отсюда (Google - ваш друг):

В DTD используются PCDATA и CDATA для утверждать что-то о допустимых содержание элементов и атрибутов, соответственно. В содержимом элемента модель, #PCDATA говорит, что элемент содержит (может содержать) "любой старый текст". (С исключениями, как указано ниже.) В объявление атрибута, CDATA один вид ограничения, который вы можете надеть допустимые значения атрибута (другие виды, все взаимоисключающие, включая ID, IDREF и NMTOKEN). атрибут, допустимые значения которого CDATA может (например, PCDATA в элементе) содержат "любой старый текст".

Потенциально запутанная проблема заключается в том, что есть еще один "CDATA", также называемые отмеченными разделами. обозначенная секция представляет собой часть элемента (#PCDATA), ограниченное специальные строки: закрыть его. если ты помните, что PCDATA "разбирается" символьные данные ", раздел CDATA буквально одно и то же, без" Разобраны ". Парсеры передают контент маркированной секции вниз по течению приложений без икоты каждый время они сталкиваются с особыми символами как < и &. Это полезно, когда вы кодируете документ, который содержит многие из этих специальных символов (например, скрипты и фрагменты кода); его проще при вводе данных, и чтения, чем соответствующая организация ссылка.

Итак, вы можете сделать вывод, что исключение правило" любого старого текста" заключается в том, что PCDATA не может включать любые из этих специальные символы, ЕСЛИ они падают в рамках отмеченного CDATA раздел.

Ответ 4

PCDATA - проанализированные символьные данные. Он анализирует все данные в XML-документе.

Пример:

<family>
    <mother>mom</mother>
    <father>dad</father>
</family>

Здесь элемент семейства содержит еще 2 элементы "мать" и "отец" . Поэтому он анализирует дальше, чтобы получить текст матери и отца, чтобы дать значение семье как "мама папа"

CDATA - unparsed characted Data.. Это данные, которые не следует анализировать далее в XML-документе.

<family>
    <![CDATA[ 
       <mother>mom</mother>
       <father>dad</father>
    ]]>
</family>

Здесь значение семейства будет <mother>mom</mother><father>dad</father>.

Ответ 5

Основное различие между PCDATA и CDATA -

PCDATA - В основном используется для ЭЛЕМЕНТОВ, в то время как

CDATA - используется для атрибутов XML i.e ATTLIST

Ответ 6

CDATA (C haracter DATA): это похоже на комментарий, но это часть документа. то есть CDATA - это данные, это часть документа, но данные не могут обрабатываться в XML.
Примечание. комментарий XML игнорируется при анализе XML, но CDATA показывает, что он есть.

PCDATA (P arsed C haracter DATA). По умолчанию все это PCDATA. PCDATA - это данные, они могут быть проанализированы в XML.