加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

DTD属性介绍

发布时间:2023-09-22 12:41:07 所属栏目:教程 来源:
导读:在本章中,我们将讨论学习DTD属性。 属性提供了有关元素的更多信息,或者更确切地说,它定义了元素的属性。 XML属性始终采用名称-值 对的形式。 元素可以具有任意数量的唯一属性。

属性声明在很多方面与元素声明非
在本章中,我们将讨论学习DTD属性。 属性提供了有关元素的更多信息,或者更确切地说,它定义了元素的属性。 XML属性始终采用名称-值 对的形式。 元素可以具有任意数量的唯一属性。

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

DTD属性声明的基本语法如下 -
<!ATTLIST element-name attribute-name attribute-type attribute-value>

在上面的语法中 -
如果元素包含属性,则DTD属性以<!ATTLIST关键字开头。
element-name指定属性适用元素的名称。
attribute-name指定element-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 address ( name )>
<!ELEMENT name ( #PCDATA )>
元素名称定义属性id,它的属性类型是CDATA,它的值为#required。
<!ATTLIST name id CDATA #required>

属性声明规则
必须使用属性列表声明在文档类型定义(DTD)中声明XML文档中使用的所有属性.
属性可能只出现在开始或空标签中。
关键字ATTLIST必须为大写
对于给定元素,属性列表中不允许重复的属性名称。

1. 属性类型
声明属性时,可以指定处理器应如何处理值中显示的数据。可以将属性类型分为三个主要类别 -
字符串类型
标记类型
枚举类型

下表提供了不同属性类型的摘要 -
字符串类型
标记类型
枚举类型

下表提供了不同属性类型的说明 -
序号    类型    描述
1    CDATA    CDATA是字符数据(文本而非标记),它是一个字符串属性类型。
2    ID    它是属性的唯一标识符,它不能出现多次。 它是一个标记化的属性类型。
3    IDREF    它用于引用另一个元素的ID,用于建立元素之间的连接,是一个标记化的属性类型。
4    IDREFS    它用于引用多个ID,是一个标记化的属性类型。
5    ENTITY    它代表文档中的外部实体,是一个标记化的属性类型。
6    ENTITIES    它表示文档中的外部实体列表,是一个标记化的属性类型。
7    NMTOKEN    它类似于CDATA,属性值由有效的XML名称组成。 它是一个标记化的属性类型。
8    NMTOKENS    它类似于CDATA,属性值包含有效XML名称列表。 它是一个标记化的属性类型。
9    NOTATION    元素将引用DTD文档中声明的表示法,它是枚举属性类型。
10    Enumeration    它允许定义其中一个值必须匹配的特定值列表。 它是枚举属性类型。

2. 属性值声明
在每个属性声明中,必须指定值在文档中的显示方式。可以指定属性为 -
有一个默认值
有固定的值
是必需的
是隐含的

2.1. 默认值
它包含默认值。 值可以用单引号(‘)或双引号(“)括起来。

以下是指定值的语法 -
<!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>

在这个例子中,有一个name元素,属性id的默认值为0。默认值包含在双引号中。

2.2. 固定值

如果要指定属性值是常量且无法更改,则使用#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 hiyizhi>
]>
<address>
  <company name = hiyizhi>we are a free online teaching faculty</company>
</address>
在这个例子中,使用了关键字#FIXED,它表示hiyizhi值是元素<company>的属性名称的唯一值。 如果尝试更改属性值,则会出错。

以下是无效的DTD -

<?xml version = 1.0?>
<!DOCTYPE address [
  <!ELEMENT address (company)*>
  <!ELEMENT company (#PCDATA)>
  <!ATTLIST company name NMTOKEN #FIXED hiyizhi>
]>
<address>
  <company name = abc>we are a free online teaching faculty</company>
</address>

2.3. 必需值

只要想要指定需要属性,可使用#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>
      Max Su
   </name>
</address>
在此示例中,使用#required关键字指定必须为name元素提供属性id

2.4. 隐含值

声明属性时,必须始终指定值声明。 如果声明的属性没有默认值,没有固定值,并且不是必需的,那么必须声明该属性是隐含的。 关键字#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关键字,因为我们不希望指定要包含在元素名称中的任何属性。 它是可选的。

 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章