xml的问题

xml的问题,xml,dtd,cdata,pcdata,Xml,Dtd,Cdata,Pcdata,我是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>

我是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,页面可以只包含一个标题元素…我说得对吗?但当我在浏览器中打开它时,即使我有两个标题元素,它也没有显示错误。为什么会发生这种情况。CDATA和PCDATA之间的区别是什么…

使用以下方法:

<?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是解析器不会解析的文本。标签内的 文本不会被视为标记,实体也不会展开

使用以下命令:

<?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是解析器不会解析的文本。标签内的 文本不会被视为标记,实体也不会展开


我的建议是选择一些可靠的验证解析器,例如Community Edition非常易于使用:

altovaxml -validate document.xml
让我们看看你的DTD出了什么问题。首先,您的文档元素根未命名为book,因此我们从这里得到第一个错误:

引用的架构或DTD中存在错误。元素与根不匹配 DTD中的元素名称“book”

第二件事是标题没有声明:

元素尚未声明

最后,要允许对PCDATA进行put选择,这意味着首先要分析字符数据和标题元素:

最后,您的DTD是:

<!DOCTYPE note [
    <!ELEMENT note (page)>
    <!ELEMENT page (#PCDATA | heading)*>
    <!ELEMENT heading (#PCDATA)>
]>

我的建议是选择一些可靠的验证解析器,例如Community Edition非常易于使用:

altovaxml -validate document.xml
让我们看看你的DTD出了什么问题。首先,您的文档元素根未命名为book,因此我们从这里得到第一个错误:

引用的架构或DTD中存在错误。元素与根不匹配 DTD中的元素名称“book”

第二件事是标题没有声明:

元素尚未声明

最后,要允许对PCDATA进行put选择,这意味着首先要分析字符数据和标题元素:

最后,您的DTD是:

<!DOCTYPE note [
    <!ELEMENT note (page)>
    <!ELEMENT page (#PCDATA | heading)*>
    <!ELEMENT heading (#PCDATA)>
]>
]>为什么book不是我的根元素…还有..if是正确的为什么不正确]>@user822982:好问题,在DTD中是不正确的,因为您不能将PCDATA放入序列元素内容中。我认为它的内容和答案应该对您有所帮助。]>为什么book不是我的根元素…还有..if是正确的为什么不正确]>@user822982:好问题,在DTD中是不正确的,因为您不能将PCDATA放入序列元素内容中。我认为它的答案应该对你有帮助。