XML& DTD - 内部一般实体

时间:2014-07-15 21:21:42

标签: xml entity dtd

我正在尝试包含一个内部通用实体,但它不起作用。 XML Copy Editor告诉我,XML文件格式正确且有效。我使用在线资源来检查我的DTD文件是否有效,这也是,但是当我在网络浏览器中检查xml文件时,我得到了这个: enter image description here

以下是XML代码:

<instructor>
  <first>Bob</first>
  <last>Dole</last>
</instructor>
<instructor>
  &instructor-name;
</instructor>

这是DTD代码:

<!-- Element instructor -->
<!ELEMENT instructor (first, last)>
<!-- Create an internal, general entity for instructor -->
<!ENTITY instructor-name "
    <first>Jimmy</first>
     <last>Davis</last>">

列出了两名教师。 Bob Dole和Jimmy Davis(存储在DTD文件中)。我最初使用相同的格式为两个教师,并没有使用任何实体,它工作得很好。当我尝试使用内部通用实体列出Jimmy Davis时,我收到了上图中显示的错误消息。我做错了什么?

1 个答案:

答案 0 :(得分:1)

如果你的DTD是真正的内部,就像内部子集一样,如评论中所述,你不应该在浏览器中打开XML时遇到任何问题。

例如,以下XML在IE或Firefox中没有问题...

<!DOCTYPE instructors [

<!ELEMENT instructors (instructor+)>
<!ELEMENT instructor (first, last)>
<!ELEMENT first (#PCDATA)>
<!ELEMENT last (#PCDATA)>

<!ENTITY instructor-name "
    <first>Jimmy</first>
     <last>Davis</last>">
]>
<instructors>
    <instructor>
        <first>Bob</first>
        <last>Dole</last>
    </instructor>
    <instructor>
        &instructor-name;
    </instructor>
</instructors>

IE显示

enter image description here

Firefox展示

enter image description here