【问题标题】:What are external entities and notations in DTD?DTD 中的外部实体和符号是什么?
【发布时间】:2014-10-20 17:20:59
【问题描述】:

我一直在 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;) 替换为声明的字符串。外部实体是否将实体名称替换为外部文档的全部内容?

【问题讨论】:

    标签: xml declaration dtd w3c


    【解决方案1】:

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

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

    此外,实体并不总是需要通过通常的&amp;entity-name; 方法来引用。属性也可以指定为类型ENTITY。您在图形等符号数据 (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>
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2017-01-25
      • 1970-01-01
      • 2021-02-28
      • 2011-02-17
      • 1970-01-01
      相关资源
      最近更新 更多