我是xml的新手......我刚开始研究xml ....我有以下疑惑.. 以下是我的xml代码
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE book [
<!ELEMENT book (page)>
<!ELEMENT page (heading,#PCDATA)>
]>
<note>
<page>
hhh<heading>c</heading><heading>s</heading>
</page>
</note>
当我在浏览器中打开它时,它显示#PCDATA出现错误...当我用PCDATA替换它时它没有显示错误...根据我的DTD,页面可以只包含一个标题元素.. .am我对吗?但是当我在浏览器中打开它时,即使我有两个标题元素也没有显示任何错误。为什么会发生这种情况.. CDATA和PCDATA之间有什么区别....
答案 0 :(得分:4)
使用此:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE note [
<!ELEMENT note (page)>
<!ELEMENT page (#PCDATA|heading)*>
<!ELEMENT heading (#PCDATA)>
]>
<note>
<page>
hhh<heading>c</heading><heading>s</heading>
</page>
</note>
PCDATA 是将由解析器解析的文本。文字将是 由解析器检查实体和标记。
CDATA 是解析器不会解析的文本。里面的标签 文本不会被视为标记,实体也不会被扩展。
答案 1 :(得分:4)
我的建议是选择一些可靠的验证解析器,例如AltovaXML(Community Edition)非常简单易用:
altovaxml -validate document.xml
让我们来看看您的DTD有什么问题。首先,您的文档元素(根)未命名为book
,因此我们从此处收到第一个错误:
引用的架构或DTD出错。元素与root不匹配 来自DTD的元素名称'book'。
第二件事是heading
未被声明:
元素尚未声明。
最后允许mixed content选择#PCDATA
(即解析后的字符数据)首先和heading
元素:
最后你的DTD是:
<!DOCTYPE note [
<!ELEMENT note (page)>
<!ELEMENT page (#PCDATA | heading)*>
<!ELEMENT heading (#PCDATA)>
]>