Разница между PCDATA и CDATA в DTD
в чем разница между #PCDATA
и #CDATA
на DTD?
6 ответов
PCDATA-проанализированные символьные данные
синтаксические анализаторы XML обычно анализируют весь текст в XML-документе.
CDATA - (Unparsed) символьные данные
термин CDATA используется для текстовых данных, которые не должны анализироваться синтаксическим анализатором XML.
символы, такие как "
- PCDATA-это текст, который будет обрабатываться парсером. Теги внутри текста будет рассматриваться как разметка и объекты будут расширяться.
- CDATA-это текст, который будет не быть обработан парсером. Теги внутри текста не обрабатываться как разметка, и объекты не будут расширяться.
по умолчанию все PCDATA. В следующем примере, игнорируя корень, <bar>
будет проанализирован, и у него не будет контента, кроме одного ребенок.
<?xml version="1.0"?>
<foo>
<bar><test>content!</test></bar>
</foo>
когда мы хотим указать, что элемент будет содержать только текст, а не дочерние элементы, мы используем ключевое слово PCDATA, потому что это ключевое слово указывает , что элемент должен содержать анализируемые символьные данные – то есть любой текст , кроме символов less-than ( ), ampersand ( & ), quote(') и double quote (").
в следующем примере, <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 добавляется хэшем просто по историческим причинам.
в DTD, PCDATA и CDATA используются для утверждайте что-то о допустимом содержание элементов и атрибутов, соответственно. В содержании элемента модель, #PCDATA говорит, что элемент содержит (может содержать) "любой старый текст." (За исключением случаев, указанных ниже.) В объявление атрибута, CDATA одно из ограничений, которое вы можете установить допустимые значения атрибута (другие виды, все взаимоисключающие, включить ID, IDREF и NMTOKEN). - атрибут, допустимые значения которого CDATA может (как PCDATA в элементе) содержать "любой старый текст."
потенциально действительно запутанная проблема это там другое " CDATA," также упоминается как отмеченные разделы. Ля маркированный участок-это часть элемента (#PCDATA) содержимое, разделенное специальные строки: закрыть его. Если вы помните, что PCDATA " анализируется характер данные, " раздел CDATA буквально то же самое, без "проанализированный."Парсеры передают контент в отмеченном разделе течению применения без икать каждое время, когда они сталкиваются со специальными персонажами
Так вы можно сделать вывод, что исключение правило "любой старый текст" заключается в том, что PCDATA не может включать любой из этих неоставляют специальные символы, если они не падают в рамках CDATA с пометкой раздел.
PCDATA-проанализированные символьные данные. Он анализирует все данные в xml-документе.
пример:
<family>
<mother>mom</mother>
<father>dad</father>
</family>
здесь элемент family содержит еще 2 элементы "мать" и "отец". Поэтому он разбирает дальше, чтобы получить текст матери и отца, чтобы дать значение семьи как "мама папа"
содержимое CDATA – данные персонажа неразобраться. Это данные, не следует анализировать дальше в XML-документ.
<family>
<![CDATA[
<mother>mom</mother>
<father>dad</father>
]]>
</family>
здесь ценность семьи будет <mother>mom</mother><father>dad</father>
.
самое главное различие между PCDATA и CDATA является
PCDATA-в основном используется для элементов в то время как
CDATA-используется для атрибутов XML i.E ATTLIST
CDATA (Character данные): это аналогично комментарию, но это часть документа. т. е. CDATA-это данные, это часть документа, но данные не могут быть проанализированы в XML.
Примечание: XML-комментарий опускается при анализе XML, но CDATA показывает, как это есть.
PCDATA (Pлень Character данные) :по умолчанию, все PCDATA. PCDATA-это данные, они могут быть проанализированы в XML.