Xml DTD中PCDATA和CDATA之间的差异

Xml DTD中PCDATA和CDATA之间的差异,xml,dtd,Xml,Dtd,\PCDATA与DTD中的\CDATA有什么区别?(): 在DTD中,PCDATA和CDATA用于 断言某件事是允许的 元素和属性的内容, 分别地在元素的内容中 模型中,#PCDATA表示元素 包含(可能包含)“任何旧文本” (例外情况如下所述)在 属性的声明CDATA是 你可以施加一种约束 属性的允许值 (其他类型,都是相互排斥的, 包括ID、IDREF和NMTOKEN)。一 允许值为的属性 CDATA can(就像元素中的PCDATA) 包含“任何旧文本” 这可能是一个非常令人困惑的问题 还

\PCDATA
DTD中的
\CDATA
有什么区别?

():

在DTD中,PCDATA和CDATA用于 断言某件事是允许的 元素和属性的内容, 分别地在元素的内容中 模型中,#PCDATA表示元素 包含(可能包含)“任何旧文本” (例外情况如下所述)在 属性的声明CDATA是 你可以施加一种约束 属性的允许值 (其他类型,都是相互排斥的, 包括ID、IDREF和NMTOKEN)。一 允许值为的属性 CDATA can(就像元素中的PCDATA) 包含“任何旧文本”

这可能是一个非常令人困惑的问题 还有另一个“CDATA” 也称为标记部分。A. 标记的节是元素的一部分 (#PCDATA)以分隔的内容 特殊字符串:关闭它。如果你 请记住,PCDATA是“解析的” 字符数据,“CDATA部分是 字面上是一样的,没有 “已解析。”解析程序传输内容 将标记的截面延伸至下游 应用程序无需每天打嗝 当他们遇到特殊人物时 像<和&。这在以下情况下非常有用: 您正在编写一个包含 很多特别的角色(比如 脚本和代码片段);它是 数据输入更方便,操作更方便 读取,而不是对应的实体 参考资料

因此,您可以推断 “任何旧文本”规则是PCDATA 不能包括任何这些未被替换的 特殊人物,除非他们倒下 在标记为 节


PCDATA-解析的字符数据

XML解析器通常解析XML文档中的所有文本

CDATA-(未解析)字符数据

术语CDATA用于描述不应由XML解析器解析的文本数据

像“
  • PCDATA
    是将由解析器解析的文本。文本中的标记 将被视为标记,实体将被展开
  • CDATA
    是解析器不会解析的文本。文本中的标记将 不会被视为标记,并且不会展开实体
默认情况下,所有内容都是
PCDATA
。在下面的示例中,忽略根,
将被解析,它将没有内容,只有一个子项

<?xml version="1.0"?>
<foo>
<bar><test>content!</test></bar>
</foo>
SGML中有几个内容模型。
#PCDATA
内容模型表示元素可能包含纯文本。其中的“已解析”部分表示对其中的标记(包括PI、注释和SGML指令)进行解析,而不是显示为原始文本。它还表示替换实体引用

另一种允许纯文本内容的内容模型是
CDATA
。在XML中,元素内容模型可能不会隐式设置为
CDATA
,但在SGML中,这意味着在元素的内容中忽略标记和实体引用。但是在
CDATA
类型的属性中,实体引用会被替换。

在XML中,
#PCDATA
是唯一的纯文本内容模型。如果您想在元素中允许文本内容,可以使用它。
CDATA
内容模型可以通过
#PCDATA
中的
CDATA
块标记显式使用,但元素内容可能不会默认定义为
CDATA

在DTD中,包含文本的属性类型必须是
CDATA
。属性声明中的
CDATA
关键字的含义与XML文档中的
CDATA
部分的含义不同。在
CDATA
部分中,所有字符都是合法的(包括
&
字符),但
]]>
结束标记除外

#PCDATA
不适用于属性的类型。它用于“叶子”文本的类型


#PCDATA
在内容模型中以散列作为前缀,以区分该关键字与名为
PCDATA
的元素(这是完全合法的)。

PCDATA和CDATA之间最主要的区别是

PCDATA-基本用于元素,而


CDATA-用于XML属性,即ATTLIST

PCDATA–解析的字符数据。它解析XML文档中的所有数据

例如:


妈妈
爸爸
在这里,
元素包含另外两个元素:
。因此,它进一步解析得到母亲和父亲的文本,将家庭的文本值作为“妈妈-爸爸”

CDATA–未解析的字符数据。这是不应在xml文档中进一步解析的数据


妈妈
爸爸
]]>
在这里,family的文本值将是CDATA(CCharacterDATA):它类似于注释,但它是文档的一部分。i、 e.CDATA是一种数据,它是文档的一部分,但数据不能用XML解析。
注意:XML注释在解析XML时省略,但CDATA显示原样


PCDATA(parsedCcharacterDATA):默认情况下,所有内容都是PCDATA。PCDATA是一种数据,可以用XML解析。

回答得很好,除了最后一句话<代码>#不是哈希标记。只有前面带有此符号的标记才是hashtag。符号本身有,包括“数字符号”、“磅符号”(主要是加拿大和美国),或者只是“哈希”(因此得名为“hashtag”)。#justhadtogetthatoffmychest我不同意,
前面的#PCDATA
是出于历史原因而存在的。这是因为在DTD中,元素还可以包含名为
PCDATA
的元素,这必须是可能的,并且看起来像
<?xml version="1.0"?>
<foo>
<bar><![CDATA[<test>content!</test>]]></bar>
</foo>