返回首页
当前位置: 主页 > 编程语言 > XML教程 >

DTD-实体

时间:2020-07-18 14:21来源:电脑教程学习网 www.etwiki.cn 编辑:小山哥

实体用于定义XML文档中特殊字符的快捷方式。实体主要可以有四种类型-

  • 内置实体

  • 角色实体

  • 一般实体

  • 参数实体

实体声明语法

通常,可以在内部外部声明实体让我们了解这些内容及其语法,如下所示:

内部实体

如果实体在DTD中声明,则称为内部实体。

句法

以下是内部实体声明的语法-

<!ENTITY entity_name "entity_value">

在上面的语法中-

  • entity_name是实体名称,后跟双引号或单引号内的值。

  • entity_value包含实体名称的值。

  • 通过在实体名称(即&entity_name)上添加前缀取消引用内部实体的实体值

以下是内部实体声明的简单示例-

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>

<!DOCTYPE address [
   <!ELEMENT address (#PCDATA)>
   <!ENTITY name "Tanmay patil">
   <!ENTITY company "TutorialsPoint">
   <!ENTITY phone_no "(011) 123-4567">
]>

<address>
   &name;
   &company;
   &phone_no;
</address>

在上面的示例中,相应的实体名称namecompanyphone_no 被其XML文档中的值替换。通过在实体名称中添加前缀取消引用实体值

将该文件另存为sample.xml并在任何浏览器中打开,您会注意到namecompanyphone_no的实体值分别被替换。

外部实体

如果实体在DTD之外声明,则称为外部实体。您可以使用系统标识符或公共标识符来引用外部实体。

句法

以下是外部实体声明的语法-

<!ENTITY name SYSTEM "URI/URL">

在上面的语法中-

  • name是实体的名称。

  • SYSTEM是关键字。

  • URI / URL是用双引号或单引号引起来的外部源地址。

种类

您可以使用-引用外部DTD

  • 系统标识符 -系统标识符使您可以指定包含DTD声明的外部文件的位置。

    如您所见,它包含关键字SYSTEM和指向文档位置的URI引用。语法如下-

<!DOCTYPE name SYSTEM "address.dtd" [...]>
  • 公共标识符 -公共标识符提供了一种定位DTD资源的机制,其编写方式如下-

    如您所见,它以关键字PUBLIC开头,后跟一个专用标识符。公共标识符用于标识目录中的条目。公开标识符可以采用任何格式;但是,一种常用的格式称为正式公共标识符或FPI。

<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">

让我们通过以下示例了解外部实体-

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE address SYSTEM "address.dtd">

<address>
   <name>
      Tanmay Patil
   </name>
   
   <company>
      TutorialsPoint
   </company>
   
   <phone>
      (011) 123-4567
   </phone>
</address>

以下是DTD文件address.dtd的内容-

<!ELEMENT address (name, company, phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>

内置实体

所有XML解析器都必须支持内置实体。通常,您可以在任何地方使用这些实体引用。您还可以在XML文档中使用普通文本,例如元素内容和属性值。

有五个内置实体在格式良好的XML中发挥作用,它们是-

  • &符:&amp;

  • 单引号:‘

  • 大于:&gt;

  • 小于:&lt;

  • 双引号:&quot;

以下示例演示了内置实体声明-

<?xml version = "1.0"?>

<note>
   <description>I'm a technical writer & programmer</description>
<note>

如您所见,&amp; 每当处理器遇到此字符时,都会用&替换该字符。

角色实体

字符实体用于命名某些实体,这些实体是信息的符号表示,即,很难或不可能键入的字符可以用字符实体代替。

以下示例演示了字符实体声明-

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE author[
   <!ELEMENT author (#PCDATA)>
   <!ENTITY writer "Tanmay patil">
   <!ENTITY copyright "&#169;">
]>
<author>&writer;&copyright;</author>

您会在这里注意到我们已经使用了&#169; 作为版权特征的价值。将该文件另存为sample.xml并在浏览器中打开它,您将看到版权已替换为字符©。

一般实体

通用实体必须在DTD中声明,然后才能在XML文档中使用。一般实体不仅可以表示单个字符,还可以表示字符,段落甚至整个文档。

句法

要声明一般实体,请在DTD中使用此一般形式的声明-

<!ENTITY ename "text">

以下示例演示了通用实体声明-

<?xml version = "1.0"?>

<!DOCTYPE note [
   <!ENTITY source-text "tutorialspoint">
]>

<note>
   &source-text;
</note>

每当XML解析器遇到对源文本实体的引用时,它将在引用点将替换文本提供给应用程序。

参数实体

参数实体的目的是使您能够创建替换文本的可重用部分。

句法

以下是参数实体声明的语法-

<!ENTITY % ename "entity_value">
  • 实体值是不是'&','%'或'“'的任何字符。

以下示例演示了参数实体声明。假设您具有以下元素声明-

<!ELEMENT residence (name, street, pincode, city, phone)>
<!ELEMENT apartment (name, street, pincode, city, phone)>
<!ELEMENT office (name, street, pincode, city, phone)>
<!ELEMENT shop (name, street, pincode, city, phone)>

现在,假设您要添加其他元素国家,那么您需要将其添加到所有四个声明中。因此,我们可以参考参数实体。现在使用参数实体引用,上面的示例将是-

<!ENTITY % area "name, street, pincode, city">
<!ENTITY % contact "phone">

以与普通实体引用相同的方式对参数实体进行解引用,仅使用百分号而不使用“&”号-

<!ELEMENT residence (%area;, %contact;)>
<!ELEMENT apartment (%area;, %contact;)>
<!ELEMENT office (%area;, %contact;)>
<!ELEMENT shop (%area;, %contact;)>

解析器读取这些声明时,会将实体的替换文本替换为实体引用。

------分隔线----------------------------
标签(Tag):
------分隔线----------------------------
推荐内容
  • DTD-组件

    本章将从DTD角度讨论XML组件。 DTD基本上将包含以下XML组件的声明- 元件 属性 实体 元...

  • DTD-概述

    XML文档类型声明,通常称为DTD,是一种精确描述XML语言的方法。 DTD根据适当的XML语言...

  • H2数据库-备份

    BACKUP是用于将数据库备份放入单独的.zip文件中的命令。 对象没有被锁定,并且在进行...

  • H2数据库-更新

    UPDATE查询用于更新或修改表中的现有记录。 我们可以将WHERE子句与UPDATE查询一起使用...

  • H2数据库-插入

    SQL INSERT语句用于将新的数据行添加到数据库中的表。 句法 以下是INSERT INTO语句的...

  • H2数据库-选择

    Select命令用于从一个或多个表中获取记录数据。 如果我们设计一个选择查询,那么它将...

猜你感兴趣