XML元素可以定义为XML文档的构建块.元素可以作为容纳文本,元素,属性,媒体对象或所有元素的容器.
使用ELEMENT声明声明DTD元素.当DTD验证XML文件时,解析器最初检查根元素,然后验证子元素.
语法
所有DTD元素声明具有这种一般形式 :
<!ELEMENT elementname(content)>
ELEMENT 声明用于表示你的解析器即将定义元素.
elementname 是元素名称(也称为通用标识符 )你正在定义.
content 定义元素中可以包含的内容(如果有的话).
元素内容类型
DTD中元素声明的内容可以归类为以下 :
空内容
元素内容
混合内容
任何内容
空内容
这是元素声明的特例.此元素声明不包含任何内容.这些是使用关键字 EMPTY 声明的.
语法
以下是空元素声明 :
<!ELEMENT elementname EMPTY>
在上面的语法 :
ELEMENT 是类别的元素声明 EMPTY
elementname 是空元素的名称.
示例
以下是简单示例演示空元素声明 :
<?xml version ="1.0"?> <!DOCTYPE hr [<!ELEMENT address EMPTY> ]> < address/>
在此示例中,地址被声明为空元素. 地址元素的标记将显示为< address/>.
元素内容
在元素声明中元素内容,内容将是括号内的允许元素.我们还可以包含多个元素.
语法
以下是元素声明的语法,包含元素内容和减号;
<!ELEMENT elementname(child1,child2 ...)>
ELEMENT 是元素声明标签
elementname 是元素的名称.
child1,child2 .. 是元素,每个元素必须在DTD中有自己的定义.
示例
下面的示例演示了元素声明的简单示例,其元素内容为 :
]>Tanmay Patil TutorialsPoint (011) 123-4567
在上面的示例中,地址是父元素,名称,公司和 phone_no 是它的子元素.
运算符和语法规则列表
下表显示了列表可以应用于定义子元素和减号的运算符和语法规则;
运算符 | 语法 | 描述 | 示例 |
---|---|---|---|
+ | <!ELEMENT element-name(child1 +)> | 它表示子元素可以在父元素内出现一次或多次. | <!ELEMENT地址(名称+)> 子元素名称可以在元素名称地址内出现一次或多次. |
* | <!ELEMENT element-name(child1 *)> | 它表示子元素在父元素内可以出现零次或多次. | < ;!ELEMENT地址(名称*)> 子元素名称可以在元素名称地址内出现零次或多次. |
? | <!ELEMENT element-name(child1?)> | 表示该子元素可以在父元素中出现零次或一次. | <!ELEMENT地址(姓名?)> 儿童element name 可以在元素名称地址内出现零次或一次. |
, | <!ELEMENT element-name(child1,child2)> | 它给出了以逗号分隔的子元素序列,它必须包含在元素名称中. | <!ELEMENT地址(姓名,公司)> 子元素名称,公司的序列,必须发生在元素名称地址内的相同顺序. |
| | <!ELEMENT element-name(child1 | child2)> | 它允许在子元素中做出选择. | <!ELEMENT地址(名称) |公司)> 它允许您选择子元素之一,即 name 或 company ,这些元素必须出现在元素名称地址. |
规则
如果有多个元素内容并且减去,我们需要遵循某些规则;
序列 : DTD文档中的元素通常必须以不同的顺序出现.如果是这种情况,则使用序列定义内容.
声明表明< address> element必须有三个孩子 - < name>,< company>和< phone> - 并且它们必须按此顺序出现.例如 :
选择 : 假设您需要允许一个元素或另一个元素,但不能同时允许两个元素.在这种情况下,您必须使用管道(|)字符.管道用作异或.例如 :
混合元素内容
这是(#PCDATA)和子元素的组合. PCDATA代表解析的字符数据,即不是标记的文本.在混合内容模型中,文本可以单独出现,也可以散布在元素之间.混合内容模型的规则与上一节中讨论的元素内容类似.
语法
关注是混合元素内容的通用语法 :
<!ELEMENT elementname(#PCDATA | child1 | child2)*>
ELEMENT 是元素声明标记.
elementname 是元素的名称.
PCDATA 是不标记的文本. #PCDATA必须在混合内容声明中排在第一位.
child1,child2 .. 是元素,每个元素必须具有自己在DTD中的定义.
如果包含子元素,则运算符(*)必须遵循混合内容声明
(#PCDATA)和children元素声明必须用(|)运算符分隔.
示例
以下是演示DTD中混合内容元素声明的简单示例.
]> Here's a bit of text mixed up with the child element.Tanmay Patil
任何元素内容
您可以使用内容中的ANY关键字声明元素.它通常被称为混合类别元素.当你还没有决定元素的允许内容时,ANY很有用.
语法
以下是语法用于声明具有任何内容和减号的元素;
<!ELEMENT elementname ANY>
这里,ANY关键字表示文本(PCDATA)和/或DTD中声明的任何元素都可以在< elementname>的内容中使用.元件.它们可以任意次数使用.但是,ANY关键字不允许您包含未在DTD中声明的元素.
示例
以下是一个简单的示例,演示了带有任何内容和减号的元素声明;
]> Here's a bit of sample text