我有一个带有 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".
这是为什么?
最佳答案
#CDATA
是一个不存在的关键字。无法将元素声明为 #CDATA
类型。
CDATA
关键字(不带 #
)有两种不同的用途:
- 在 attribute declarations in DTDs .
- 在 CDATA sections ,仅出现在 XML 文档实例中(不能在 DTD 中声明)。
需要明确的是:不可能将元素声明为“cdata/CDATA/#CDATA”类型。 CDATA 部分 ( <![CDATA[...]]>
) 为 XML 作者提供了便利。如果需要,它只需在 XML 文档中使用即可。它不是在 DTD 中声明的内容。
关于xml - 在 DTD 模式中声明多个规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20096232/