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关键字,因为我们不希望指定要包含在元素名称中的任何属性。 它是可选的。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |