Xml DTD中的外部实体和符号是什么?

Xml DTD中的外部实体和符号是什么?,xml,declaration,dtd,w3c,Xml,Declaration,Dtd,W3c,我一直在W3C推荐和维基百科中阅读这些主题。我不确定我是否完全理解了它们。有人能给我解释清楚DTD中有哪些外部实体和符号吗?它们到底有什么用途 以下是一些外部实体声明的示例: <!ENTITY open-hatch SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml"> <!ENTITY open-hatch PUBLIC "-//Textuality//TEXT

我一直在W3C推荐和维基百科中阅读这些主题。我不确定我是否完全理解了它们。有人能给我解释清楚DTD中有哪些外部实体和符号吗?它们到底有什么用途

以下是一些外部实体声明的示例:

<!ENTITY open-hatch SYSTEM    
         "http://www.textuality.com/boilerplate/OpenHatch.xml">
<!ENTITY open-hatch PUBLIC 
         "-//Textuality//TEXT Standard open-hatch boilerplate//EN"
         "http://www.textuality.com/boilerplate/OpenHatch.xml">
<!ENTITY hatch-pic SYSTEM 
         "../grafix/OpenHatch.gif"
         NDATA gif >


如果我错了,请纠正我。通用内部实体将文档正文中的实体名称(&ent;)替换为声明的字符串。外部实体是否用外部文档的全部内容替换实体名称?

是,您理解正确。实体引用(如
&open hatch;
)是对实体声明中定义的内容的引用

符号用于指定非XML(未解析)数据。在上面的示例中,实体声明指定
OpenHatch.gif
的内容是符号
gif
。对于
gif
,还需要一个相应的
符号
声明。XML处理器或应用程序可以使用它来查找另一个可以处理该符号数据的应用程序

此外,实体并不总是需要用通常的
&实体名称来引用方法。属性也可以指定为类型
实体
。您可以在像图形这样的符号数据(NDATA)中看到这一点

例如

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE doc [
<!ELEMENT doc (graphic)>
<!ELEMENT graphic EMPTY>
<!ATTLIST graphic
          src ENTITY #REQUIRED>
<!NOTATION cgm PUBLIC "-//USA-DOD//NOTATION Computer Graphics Metafile//EN">
<!ENTITY test-image SYSTEM "cgm/test-image.cgm" NDATA cgm>
]>
<doc>
    <graphic src="test-image"/>
</doc>

]>
在上面的示例中,我有一个名为
testimage
的实体。该实体是对文件
cgm/test image.cgm
的引用,该文件是符号
cgm
。该实体由
graphic
元素的
src
属性引用。所有这些信息的使用方式取决于使用数据的应用程序