我有一个带有dtd架构的xml文件。
我尝试在属性和元素上添加一些规则。
到目前为止,我设法为以下格式的不同元素提供了两个ATTLIST
:
<!DOCTYPE root [
<!ATTLIST a ..... >
<!ATTLIST b ..... >
]>
现在我想做以下事情: 假设我有:
<a ...><value>some_value_with_&&&</value></a>
当然,该值必须用<![CDATA[some_value_with_&&&]]>
由于我已经有了dtd模式,我想我可以删除CDATA(最初保留它),然后在DTD中声明它的cdata类型,这可能吗?
我试着添加以下内容:
<!ELEMENT value (#CDATA)>
但我有两个问题:
它强制自己(我假设)任何值元素,我可以将其限制为仅a
个元素吗?
我使用java。我得到以下错误:
A '(' character or an element type is required in the declaration of element type "value".
为什么?
答案 0 :(得分:2)
#CDATA
是一个不存在的关键字。无法将元素声明为#CDATA
类型。
CDATA
关键字(不含#
)有两个不同的用途:
要明确:不能将元素声明为“cdata / CDATA /#CDATA”类型。 CDATA部分(<![CDATA[...]]>
)是XML作者的便利。如果需要,它只是在XML文档中使用。它不是在DTD中声明的东西。