В чем разница между #PCDATA
и #CDATA
в DTD?
Разница между PCDATA и CDATA в DTD
Ответ 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
В 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.