📜  DTD-元素

📅  最后修改于: 2020-11-10 04:43:15             🧑  作者: Mango


XML元素可以定义为XML文档的构建块。元素可以充当容纳文本,元素,属性,媒体对象或所有元素混合的容器。

DTD元素用ELEMENT声明声明。当DTD验证XML文件时,解析器首先检查根元素,然后验证子元素。

句法

所有DTD元素声明都具有这种通用形式-

  • ELEMENT声明用于指示要定义元素的解析器。

  • elementname是您定义的元素名称(也称为通用标识符)。

  • content定义元素中可以包含的内容(如果有)。

元素内容类型

DTD中元素声明的内容可以分类如下-

  • 空内容

  • 元素含量

  • 混合内容

  • 任何内容

空内容

这是元素声明的特例。该元素声明不包含任何内容。这些用关键字EMPTY声明。

句法

以下是空元素声明的语法-

在上面的语法中-

  • ELEMENTEMPTY类别的元素声明

  • elementname是空元素的名称。

以下是演示空元素声明的简单示例-




       
]>

在此示例中,地址被声明为空元素。地址元素的标记将显示为

元素含量

在带有元素内容的元素声明中,内容将是括号内允许的元素。我们还可以包含多个元素。

句法

以下是带有元素内容的元素声明的语法-

  • ELEMENT是元素声明标签

  • elementname是元素的名称。

  • child1,child2 ..是元素,并且每个元素在DTD中必须具有自己的定义。

下面的示例演示了一个简单的示例,用于声明元素内容为-




   
   
   
   
]>

Tanmay Patil TutorialsPoint (011) 123-4567

在上面的示例中, address是父元素, namecompanyphone_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关键字不允许您包括未在DTD中声明的元素。

以下是一个简单的示例,演示具有ANY内容的元素声明-




   
]>

Here's a bit of sample text