xml 的问题

发布于 2024-12-01 22:10:13 字数 520 浏览 4 评论 0原文

我是 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 之间有什么区别...

I am novice to xml...I just started studying xml....I have the following doubts..
The following is my xml code

<?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>

When i opened this in browser ,it shown that there is an error with #PCDATA...when i replaced it with PCDATA it showed no error...According to my DTD, page can contain exactly one heading element...am i right?But when i opened it in browser it showed no error even if i have two heading elements..Why did it happen..Also what is the difference between CDATA and PCDATA....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你的往事 2024-12-08 22:10:13

使用这个:

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

Use this:

<?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 is text that WILL be parsed by a parser. The text will be
examined by the parser for entities and markup.

CDATA is text that will NOT be parsed by a parser. Tags inside the
text will NOT be treated as markup and entities will not be expanded.

鲸落 2024-12-08 22:10:13

我的建议是选择一些可靠的验证解析器,例如 AltovaXML (社区版)非常简单使用方法:

altovaxml -validate document.xml

让我们看看您的 DTD 有什么问题。首先,您的文档元素(根)未命名为 book,因此我们从这里得到第一个错误:

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

第二件事是 heading 没有声明:

元素尚未声明。

最后允许混合内容将选择与#PCDATA(表示已解析的字符数据)首先heading元素:

最后你的 DTD 是:

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

My advice is to pick up some solid validating parser, for example AltovaXML (Community Edition) is very straightforward to use:

altovaxml -validate document.xml

Let's look what's wrong with your DTD. First of all your document element (root) is not named book, so we got first error from here:

Error in referenced Schema or DTD. Element does not match root
element name 'book' from the DTD.

Second thing is that heading is not declared:

Element has not been declared.

Finally to allow mixed content put choice with #PCDATA (that means parsed character data) at first and heading element:

Finally your DTD is:

<!DOCTYPE note [
    <!ELEMENT note (page)>
    <!ELEMENT page (#PCDATA | heading)*>
    <!ELEMENT heading (#PCDATA)>
]>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文