【发布时间】:2011-11-23 14:53:02
【问题描述】:
我正在尝试使用我正在编写的 DTD 验证一些 xml,但我总是在具有 CDATA 数据类型的元素上收到验证错误。像这样
<!ELEMENT title (#CDATA)>
我尝试使用 textmate xml 验证 (XMLlint) 和在线验证器 (w3Schools) 进行验证,但总是收到此错误:
error: ContentDecl : Name or '(' expected
谁能解释一下这里发生了什么?
干杯
完整的 xml 和 dtd 示例(我从 here 获取了这个,所以我希望它是有效的):
<?xml version="1.0"?>
<!DOCTYPE bookstore [
<!ELEMENT bookstore (name,topic+)>
<!ELEMENT topic (name,book*)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT book (title,author)>
<!ELEMENT title (#CDATA)>
<!ELEMENT author (#CDATA)>
<!ELEMENT isbn (#PCDATA)>
<!ATTLIST book isbn CDATA "0">
]>
<bookstore>
<name>Mike's Store</name>
<topic>
<name>XML</name>
<book isbn="123-456-789">
<title>Mike's Guide To DTD's and XML Schemas<</title>
<author>Mike Jervis</author>
</book>
</topic>
</bookstore>
【问题讨论】:
-
刚刚在 XMLlint 文档中找到了这个:--nocdata 用等效的文本节点替换 CDATA 部分。
标签: xml validation dtd cdata