White space is required before the attribute type in the declaration of attribute "t" for element "b

本文详细介绍了XML中PCDATA与CDATA的区别及其应用场景。PCDATA用于元素内部,允许包含特殊字符并由XML解析器解析;CDATA则用于属性值,表示内容不需要XML解析器处理,实体引用也不会被展开。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

White space is required before the attribute type in the declaration of attribute "t" for element "bean".


PCDATA是将会被解析的文本,而CDATA是不会被解析的文本。

所以
(1)DTD中元素的类型常定义为PCDATA,因为元素内可能还包含子元素等内容,需要xml解析器对>,<,&,',"几个特殊字符进行解析。另外PCDATA中的实体会被展开,所以PCDATA常作为xml结构的一部分(子元素)。如果想在PCDATA中包含>,<,&,',"这些特殊字符就要使用实体(实体和实体引用的解析在最后)。
(2)属性的类型常定义为CDATA(不能为PCDATA),表示这部分内容不需要xml解析,实体也不会被展开(个人觉得说成实体引用不会被展开更好?)。因此xml中需要添加一段代码时可以将其类型指定为CDATA,这就相当于告诉xml解析器这一段内容不是给你看的(是给javascript引擎看的!)。


错误实例:


<!DOCTYPE config[
    <!ELEMENT config (bean+)>
    <!ELEMENT bean (k,v)>
    <!ATTLIST bean t PCDATA #REQUIRED>
    <!ELEMENT v (#PCDATA)>
    <!ELEMENT k (#PCDATA)>
    ]>
<config>
    <bean t="String">
        <k>merchantNo</k>
        <v>"m"</v>
    </bean>
</config>

正确:
<!DOCTYPE config[
    <!ELEMENT config (bean+)>
    <!ELEMENT bean (k,v)>
    <!ATTLIST bean t CDATA #REQUIRED>
    <!ELEMENT v (#PCDATA)>
    <!ELEMENT k (#PCDATA)>
    ]>
<config>
    <bean t="String">
        <k>merchantNo</k>
        <v>"m"</v>
    </bean>
</config>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值