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

DTD-属性

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

在本章中,我们将讨论DTD属性。属性提供有关元素的更多信息,或更准确地说,它定义元素的属性。XML属性始终采用名称/值对的形式。元素可以具有任意数量的唯一属性。

属性声明在很多方面与元素声明非常相似,除了一种方式。您不必为元素声明允许的内容,而是为每个元素声明允许的属性的列表。这些列表称为ATTLIST声明。

句法

DTD属性声明的基本语法如下-

<!ATTLIST element-name attribute-name attribute-type attribute-value>

在上面的语法中-

  • 如果元素包含属性,则DTD属性以<!ATTLIST关键字开头。

  • element-name指定要应用属性的元素的名称。

  • attribute-name指定元素名称中包含的属性名称。

  • attribute-type定义属性的类型我们将在以下各节中对此进行更多讨论。

  • attribute-value采用属性必须定义的固定值。我们将在以下各节中对此进行更多讨论。

以下是DTD中属性声明的简单示例-

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA #REQUIRED>
]>

<address>
   <name id = "123">Tanmay Patil</name>
</address>

让我们看一下上面的代码-

  • 从XML声明开始,带有以下语句-

<?xml version = "1.0"?>
  • XML标头之后是文档类型声明,通常称为DOCTYPE,如下所示-

    DOCTYPE通知解析器DTD与该XML文档相关联。DOCTYPE声明在元素名称的开头带有感叹号(!)。

<!DOCTYPE address [
  • 以下是DTD的正文。在这里我们声明了element和attribute-

<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
  • 元素名称的属性ID定义如下:

    在这里,属性类型为CDATA,其值为#REQUIRED

<!ATTLIST name id CDATA #REQUIRED>

属性声明规则

  • 必须使用属性列表声明在文档类型定义(DTD)中声明XML文档中使用的所有属性。

  • 属性只能出现在开始或空标记中。

  • 关键字ATTLIST必须为大写

  • 给定元素的属性列表中将不允许使用重复的属性名称。

属性类型

声明属性时,可以指定处理器应如何处理值中显示的数据。我们可以将属性类型分为三个主要类别:

  • 字符串类型

  • 标记类型

  • 枚举类型

下表提供了不同属性类型的摘要-

序号 类型与说明
1个

数据

CDATA是字符数据(文本而不是标记)。它是一个字符串属性类型

2

ID

它是属性的唯一标识符。它不应出现多次。它是一种标记化属性类型

3

IDREF

用于引用另一个元素的ID。它用于在元素之间建立连接。它是一种标记化属性类型

4

IDREFS

它用于引用多个ID。它是一种标记化属性类型

5

实体

它代表文档中的外部实体。它是一种标记化属性类型

6

实体

它代表文档中外部实体的列表。它是一种标记化属性类型

7

NMTOKEN

它类似于CDATA,并且属性值由有效的XML名称组成。它是一种标记化属性类型

8

NMTOKENS

它类似于CDATA,并且属性值包含有效XML名称的列表。它是一种标记化属性类型

9

符号

元素将引用DTD文档中声明的符号。它是枚举的属性类型

10

枚举

它允许定义一个特定的值列表,其中一个值必须匹配。它是枚举的属性类型

属性值声明

在每个属性声明中,您必须指定该值在文档中的显示方式。您可以指定属性-

  • 可以有一个默认值

  • 可以有一个固定值

  • 是必须的

  • 被暗示

默认值

它包含默认值。这些值可以用单引号(')或双引号(“)引起来。

句法

以下是value的语法-

<!ATTLIST element-name attribute-name attribute-type "default-value">

其中default-value是定义的属性值。

以下是带有默认值的属性声明的简单示例-

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA "0">
]>

<address>
   <name id = "123">
      Tanmay Patil
   </name>
</address>

在此示例中,我们具有名称元素,属性ID的默认值为0默认值用双引号引起来。

固定值

当您要指定属性值是恒定且不能更改时,使用#FIXED关键字后跟固定值。固定属性的常见用法是指定版本号。

句法

以下是固定值的语法-

<!ATTLIST element-name attribute-name attribute-type #FIXED "value" >

其中#FIXED是定义的属性值。

以下是带有FIXED值的属性声明的简单示例-

<?xml version = "1.0"?>

<!DOCTYPE address [
  <!ELEMENT address (company)*>
  <!ELEMENT company (#PCDATA)>
  <!ATTLIST company name NMTOKEN #FIXED "tutorialspoint">
]>

<address>
  <company name = "tutorialspoint">we are a free online teaching faculty</company>
</address>

在此示例中,我们使用关键字#FIXED表示值“ tutorialspoint”是元素<company> 的属性名称的唯一值如果我们尝试更改属性值,那么它将给出错误。

以下是无效的DTD-

<?xml version = "1.0"?>

<!DOCTYPE address [
  <!ELEMENT address (company)*>
  <!ELEMENT company (#PCDATA)>
  <!ATTLIST company name NMTOKEN #FIXED "tutorialspoint">
]>

<address>
  <company name = "abc">we are a free online teaching faculty</company>
</address>

所需值

每当您需要指定属性是必需的时,请使用#REQUIRED关键字。

句法

以下是#REQUIRED的语法-

<!ATTLIST element-name attribute-name attribute-type #REQUIRED>

其中#REQUIRED是定义的属性类型。

以下是使用#REQUIRED关键字的DTD属性声明的简单示例-

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA #REQUIRED>
]>

<address>
   <name id = "123">
      Tanmay Patil
   </name>
</address>

在这个例子中,我们使用了#REQUIRED关键字指定属性ID必须为元素名称提供名称

隐含价值

声明属性时,必须始终指定一个值声明。如果您要声明的属性没有默认值,没有固定值,并且不是必需的,那么您必须声明该属性为implied关键字#IMPLIED用于指定隐含属性

句法

以下是#IMPLIED的语法-

<!ATTLIST element-name attribute-name attribute-type #IMPLIED>

其中#IMPLIED是定义的属性类型。

以下是#IMPLIED的简单示例

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA #IMPLIED>
]>

<address>
   <name />
</address>

在此示例中,我们使用关键字#IMPLIED,因为我们不想指定要包含在元素name中的任何属性它是可选的。

------分隔线----------------------------
标签(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命令用于从一个或多个表中获取记录数据。 如果我们设计一个选择查询,那么它将...

猜你感兴趣