在本章中,我们将讨论DTD属性. Attribute提供了有关元素的更多信息,或者更确切地说,它定义了元素的属性. XML属性始终采用名称 - 值对的形式.元素可以包含任意数量的唯一属性.
属性声明与元素声明非常相似,除了一个;您可以为每个元素声明一个允许的属性列表,而不是为元素声明允许的内容.这些列表称为ATTLIST声明.
语法
DTD属性声明的基本语法如下 :
<!ATTLIST element-name attribute-name attribute-type attribute-value>
在上面的语法 :
如果元素包含属性,则DTD属性以<!ATTLIST关键字开头.
元素名称指定名称属性适用的元素.
attribute-name 指定元素名称中包含的属性的名称.
attribute-type 定义属性的类型.我们将在以下部分中对此进行更多讨论.
attribute-value 采用属性必须定义的固定值.我们将在以下部分讨论更多相关内容.
示例
下面是一个简单的内容DTD中的属性声明示例 :
]>Tanmay Patil
让我们看看上面的代码 :
从XML声明开始,带有以下语句 :
<? xml version ="1.0"?>
XML标头后面是文档类型声明,通常称为DOCTYPE如下所示 :
DOCTYPE通知解析器DTD与此XML文档相关联. DOCTYPE声明在元素名称的开头有一个感叹号(!).
以下是DTD的正文.这里我们声明了元素和属性 :
元素 id name 定义为下面给出的 :
这里的属性类型是 CDATA ,其值是 #REQUIRED .
<!ATTLIST name id CDATA #REQUIRED>
属性声明规则
所有属性必须使用属性列表声明在文档类型定义(DTD)中声明XML文档中使用
属性可能仅出现在开始或空标记中.
关键字ATTLIST必须为大写
不会有重复的属性名称允许在给定元素的属性列表中.
属性类型
声明属性时,您可以指定处理器应如何处理值中显示的数据.我们可以将属性类型分为三个主要类别 :
字符串类型
标记类型
枚举类型
下表提供了不同属性类型的摘要 :
Sr.No. | Type&说明 |
---|---|
1 | CDATA CDATA是字符数据(文本而非标记).它是字符串属性类型. |
2 | ID 它是属性的唯一标识符.它不应该出现多次.它是标记属性类型. |
3 | IDREF 它用于引用另一个元素的ID.它用于建立元素之间的连接.它是标记化属性类型. |
4 | IDREFS 它用于引用多个ID.它是标记属性类型. |
5 | ENTITY 它代表文档中的外部实体.它是标记属性类型. |
6 | ENTITIES 它表示文档中的外部实体列表.它是标记属性类型. |
7 | NMTOKEN 它类似于CDATA,属性值由有效的XML名称组成.它是标记化属性类型. |
8 | NMTOKENS 它类似于CDATA,属性值包含有效XML名称列表.它是标记属性类型. |
9 | 注释 元素将被引用到DTD文档中声明的符号.它是枚举属性类型. |
10 | 枚举 它允许定义其中一个值必须匹配的特定值列表.它是枚举属性类型. |
属性值声明
在每个属性声明中,您必须指定值在文档中的显示方式.您可以指定属性 :
是否可以设置默认值
可以有固定值
是必需的
隐含
默认值
它包含默认值.这些值可以用单引号(')或双引号(")括起来.
语法
以下是value : 的语法;
<!ATTLIST element-name attribute-name attribute-type"default-value">
其中 default-value 是定义的属性值.
示例
以下是属性声明的一个简单示例,默认值为 :
]>Tanmay Patil
在这个例子中我们有名称元素,其属性为 id ,其默认值为 0 .默认值被包含在双引号中.
固定值
当您要指定属性时,使用#FIXED关键字后跟固定值值是常量,不能更改.固定属性的常见用法是指定版本号.
语法
以下是固定值的语法 :
<!ATTLIST element-name attribute-name attribute-type #FIXED"value">
其中#FIXED是定义的属性值.
示例
以下是一个简单的属性声明示例,其中包含FIXED值 :
<?xml version ="1.0" ?> <!DOCTYPE地址[<!ELEMENT地址(公司)*> <!ELEMENT公司(#PCDATA)> <!ATTLIST公司名称NMTOKEN #FIXED"it1352"> ]> < address> < company name ="it1352">我们是一个免费的在线教学教师
在这个例子中我们使用了关键字#FIXED,它表示值"it1352"是属性 name
以下是无效的DTD :
]>we are a free online teaching faculty
所需值
每当您想要指定需要属性时,请使用#REQUIRED关键字.
语法
以下是#REQUIRED : 的语法;
其中#REQUIRED是定义的属性类型.
示例
以下是使用#REQUIRED关键字 : 的DTD属性声明的简单示例;
]>Tanmay Patil
在此示例中,我们使用#REQUIRED关键字指定必须为元素名称 id > name
IMPLIED值
声明属性时,必须始终指定值声明.如果您声明的属性没有默认值,没有固定值,并且不是必需的,那么您必须声明该属性为暗示.关键字#IMPLIED用于将属性指定为暗示.
语法
关注是#IMPLIED : 的语法;
<!ATTLIST element-name attribute-name attribute-type #IMPLIED>
其中#IMPLIED是定义的属性类型.
示例
以下是#IMPLIED的简单示例
]>
在这个例子中,我们使用了关键字#IMPLIED,因为我们不想指定要包含在元素 name 中的任何属性.这是可选的.