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


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

6 78

6 ответов:

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

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

CDATA - (Unparsed) символьные данные

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

символы типа "

  • 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 говорит, что элемент может содержать простой текст. "Анализируемая" часть означает, что разметка (включая PiS, комментарии и директивы SGML) в ней анализируется, а не отображается как необработанный текст. Это также означает, что ссылки на сущности заменяется.

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

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

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

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

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

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

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

потенциально очень запутанная проблема разве что там другое " CDATA," также упоминается как отмеченные разделы. Один отмеченный участок-это часть элемента (#PCDATA) содержимое, разделенное специальные строки: чтобы закрыть его. Если вы помните, что PCDATA " разбирается характер данных" раздел CDATA буквально то же самое, без "проанализированный."Анализаторы передавать содержание из отмеченного участка вниз по течению применения без икать каждое время, когда они сталкиваются со специальными символами как

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

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

пример:

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

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

CDATA-непроверенные характерные данные. Это данные, не следует разбирать дальше в XML-документ.

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

здесь ценность семьи будет <mother>mom</mother><father>dad</father>.

самое главное различие между PCDATA и CDATA является

PCDATA-в основном используется для элементов в то время как

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

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

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