如何添加外部链接到XML文档(DTD架构)?

时间:2013-04-17 17:32:46

标签: xml syntax-error dtd

首先 - 创建xml文件contract01.xml并添加一些常用链接 - &buyer;

这个目标是另一个文件contr01.dtd。这是根据DTD Sheme创建的。

需要更改从&buyer;Vasul Vadultsyv

的链接

但是,在.xml浏览器中启动此Chrome文件时,它会显示下一个errors:

This page contains the following errors:

error on line 4 at column 17: Entity 'buyer' not defined
error on line 6 at column 24: Entity 'buyer' not defined
error on line 7 at column 35: Entity 'buyer' not defined
Below is a rendering of the page up to the first error.

我无法理解为什么会发生这种情况 您是否知道如何以正确的方式链接到XML(DTD)来解决这种情况 我从Sams Teach Yourself XML in 21 Days (3rd Edition)尝试了这个例子 也许这可能是一些旧信息。

代码(contract01.xml):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE contract SYSTEM "contr01.dtd">
<contract>
    <para1>&buyer; agrees to buy the property defined below on the terms 
            and conditions set forth in this contract.</para1>
    <para2 section="1">&buyer; will take title of the real propirty described below, 
            for which consideration &buyer; agrees to pay... </para2>
</contract>

代码(contr01.dtd)

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT contract (para1, para2)>
<!ELEMENT para1 (#PCDATA)>
<!ELEMENT para2 (#PCDATA)>
<!ATTLIST para2
    selection CDATA #REQUIRED>
<!ENTITY buyer "Vasul Vadultsyv">

问题:

  • 怎么解决这个麻烦?
  • 你能推荐一些好的xml教程吗?

1 个答案:

答案 0 :(得分:1)

我认为chrome不会从本地系统加载DTD。尝试在内部子集中包含实体声明:

<!DOCTYPE contract SYSTEM "contr01.dtd" [
<!ENTITY buyer "Vasul Vadultsyv">
]>

也许您应该尝试使用实际验证器而不是Web浏览器验证XML。 (Xerces易于使用。)