📅  最后修改于: 2020-11-10 04:43:15             🧑  作者: Mango
XML元素可以定义为XML文档的构建块。元素可以充当容纳文本,元素,属性,媒体对象或所有元素混合的容器。
DTD元素用ELEMENT声明声明。当DTD验证XML文件时,解析器首先检查根元素,然后验证子元素。
所有DTD元素声明都具有这种通用形式-
ELEMENT声明用于指示要定义元素的解析器。
elementname是您定义的元素名称(也称为通用标识符)。
content定义元素中可以包含的内容(如果有)。
DTD中元素声明的内容可以分类如下-
空内容
元素含量
混合内容
任何内容
这是元素声明的特例。该元素声明不包含任何内容。这些用关键字EMPTY声明。
句法
以下是空元素声明的语法-
在上面的语法中-
ELEMENT是EMPTY类别的元素声明
elementname是空元素的名称。
例
以下是演示空元素声明的简单示例-
]>
在此示例中,地址被声明为空元素。地址元素的标记将显示为
。在带有元素内容的元素声明中,内容将是括号内允许的元素。我们还可以包含多个元素。
句法
以下是带有元素内容的元素声明的语法-
ELEMENT是元素声明标签
elementname是元素的名称。
child1,child2 ..是元素,并且每个元素在DTD中必须具有自己的定义。
例
下面的示例演示了一个简单的示例,用于声明元素内容为-
]>
Tanmay Patil
TutorialsPoint
(011) 123-4567
在上面的示例中, address是父元素, name , company和phone_no是其子元素。
下表显示了可用于定义子元素的运算符和语法规则的列表-
Operator | Syntax | Description | Example |
---|---|---|---|
+ | It indicates that child element can occur one or more times inside parent element. |
Child element name can occur one or more times inside the element name address. |
|
* | It indicates that child element can occur zero or more times inside parent element. |
Child element name can occur zero or more times inside the element name address. |
|
? | It indicates that child element can occur zero or one time inside parent element. |
Child element name can occur zero or one time inside the element name address. |
|
, | It gives sequence of child elements separated by comma which must be included in the the element-name. |
Sequence of child elements name, company, which must occur in the same order inside the element name address. |
|
| | It allows making choices in the child element. |
It allows you to choose either of child elements i.e. name or company, which must occur in inside the element name address. |
如果元素内容不止一个,我们需要遵循某些规则-
顺序-通常,DTD文档中的元素必须以不同的顺序出现。在这种情况下,您可以使用序列定义内容。
声明表明
元素必须恰好具有三个子元素-
选择-假设您需要允许一个或另一个元素,但不能同时允许两个元素。在这种情况下,必须使用竖线(|)字符。管道用作异或。例如-
这是(#PCDATA)和子元素的组合。 PCDATA代表解析的字符数据,即不是标记的文本。在混合内容模型中,文本可以单独出现,也可以散布在元素之间。混合内容模型的规则类似于上一节中讨论的元素内容。
句法
以下是混合元素内容的通用语法-
ELEMENT是元素声明标签。
elementname是元素的名称。
PCDATA是不是标记的文本。 #PCDATA必须在混合内容声明中排在第一位。
child1,child2 ..是元素,并且每个元素在DTD中必须具有自己的定义。
如果包含子元素,则运算符(*)必须遵循混合内容声明
(#PCDATA)和子元素声明必须由(|)运算符分隔。
例
以下是一个简单的示例,演示了DTD中的混合内容元素声明。
]>
Here's a bit of text mixed up with the child element.
Tanmay Patil
您可以在内容中使用ANY关键字声明元素。它通常被称为混合类别元素。当您尚未决定元素的允许内容时,ANY会很有用。
句法
以下是声明具有任何内容的元素的语法-
在此,ANY关键字指示文本(PCDATA)和/或DTD中声明的任何元素都可以在
例
以下是一个简单的示例,演示具有ANY内容的元素声明-
]>
Here's a bit of sample text