2011-04-19 67 views
3

我有问题点点外部DTD与外部实体引用工作外部实体引用

实施例

[name.xml的]

<?xml version="1.0" ?> 
<!DOCTYPE simple SYSTEM "simple.dtd"> 
<simple> 
     <name> &a; </name> 
     <age> 21 </age> 
     <address> bsk street </address> 
</simple> 

[name.dtd]

<?xml version="1.0" ?> 
<!ELEMENT simple (name,age,address)> 
<!ELEMENT name (#PCDATA)> 
<!ELEMENT age (#PCDATA)> 
<!ELEMENT address (#PCDATA)> 
<!ELEMENT a "abhijeet"> 

当我在Internet Explorer上运行此程序时,我收到错误...

回答

8

这是因为您正在使用ELEMENT声明来声明实体。

这是你的实体的声明应该是什么样子:

<!ENTITY a "abhijeet"> 

而且,你在你的例子有[name.dtd],但你的系统标识符显示simple.dtd。确保您的系统标识符指向正确的DTD。内部子集的

例子:

<?xml version="1.0"?> 
<!DOCTYPE simple SYSTEM "simple.dtd" [ 
<!ENTITY a "abhijeet"> 
]> 
<simple> 
    <name> &a; </name> 
    <age> 21 </age> 
    <address> bsk street </address> 
</simple> 
+0

,但我有疑问,为什么它只能在IE浏览器为什么不Firefox或Chrome – abhijeet 2011-04-19 05:15:46

+0

我不认为Firefox的加载外部实体(看到的是https://developer.mozilla。组织/ EN/XML_in_Mozilla)。在IE和Firefox中可以使用的一种方法是在序言/文档类型声明中的内部子集(在[[和']之间添加'ENTITY'声明)(我在上面添加了一个例子。) – 2011-04-19 05:48:14

+0

Nice声明xml实体 – 2015-02-04 19:02:24