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属性,即ATTLISTPCDATA–解析的字符数据。它解析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>