返回首页
当前位置: 主页 > 编程语言 > XML教程 >

DTD-元素

时间:2020-07-18 14:20来源:电脑教程学习网 www.etwiki.cn 编辑:小山哥

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

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

句法

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

<!ELEMENT elementname (content)>
  • ELEMENT声明用于指示将要定义元素的解析器。

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

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

元素内容类型

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

  • 空内容

  • 元素含量

  • 混合内容

  • 任何内容

空内容

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

句法

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

<!ELEMENT elementname EMPTY >

在上面的语法中-

  • ELEMENTEMPTY类别的元素声明

  • elementname是空元素的名称。

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

<?xml version = "1.0"?>

<!DOCTYPE hr[
   <!ELEMENT address EMPTY>    
]>
<address />

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

元素含量

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

句法

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

<!ELEMENT elementname (child1, child2...)>
  • ELEMENT是元素声明标签

  • elementname是元素的名称。

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

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

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>

<!DOCTYPE address [
   <!ELEMENT address (name,company,phone)>
   <!ELEMENT name (#PCDATA)>
   <!ELEMENT company (#PCDATA)>
   <!ELEMENT phone (#PCDATA)>
]>

<address>
   <name>Tanmay Patil</name>
   <company>TutorialsPoint</company>
   <phone>(011) 123-4567</phone>
</address>

在上面的示例中,address是父元素,namecompanyphone_no是其子元素。

运算符列表和语法规则

下表显示了可用于定义子元素的运算符和语法规则的列表-

操作员 句法 描述
+ <!ELEMENT元素名称(child1 +)> 它指示子元素可以在父元素内发生一次或多次。

<!ELEMENT地址(名称+)>

子元素名称可以在元素名称地址内出现一次或多次

* <!ELEMENT元素名称(child1 *)> 它指示子元素可以在父元素内出现零次或多次。

<!ELEMENT地址(名称*)>

子元素名称可以在元素名称地址内出现零次或多次

<!ELEMENT元素名称(child1?)> 它指示子元素可以在父元素内出现零次或一次。

<!ELEMENT地址(名称?)>

子元素名称可以在元素名称地址内出现零次或一次

<!ELEMENT元素名称(child1,child2)> 它给出了由逗号分隔的子元素的序列,必须包含在元素名称中。

<!ELEMENT地址(名称,公司)>

子元素名称company的序列,必须在元素名称地址内以相同顺序出现

| <!ELEMENT元素名称(child1 | child2)> 它允许在子元素中进行选择。

<!ELEMENT地址(名称|公司)>

它允许您选择子元素,即名称公司,它们必须出现在元素名称地址内部

规则

如果元素内容不止一个,我们需要遵循某些规则-

  • 顺序 -通常,DTD文档中的元素必须以不同的顺序出现。在这种情况下,您可以使用序列定义内容。

    该声明表明<address>元素必须恰好具有三个子元素-<name>,<company>和<phone>-并且它们必须按此顺序出现。例如-

<!ELEMENT address (name,company,phone)>
  • 选择 -假设您需要允许一个或另一个元素,但不允许两个都允许。在这种情况下,必须使用竖线(|)字符。管道用作异或。例如-

<!ELEMENT address (mobile | landline)>

混合元素含量

这是(#PCDATA)和子元素的组合。PCDATA代表解析的字符数据,即不是标记的文本。在混合内容模型中,文本可以单独出现,也可以散布在元素之间。混合内容模型的规则类似于上一节中讨论的元素内容。

句法

以下是混合元素内容的通用语法-

<!ELEMENT elementname (#PCDATA|child1|child2)*>
  • ELEMENT是元素声明标签。

  • elementname是元素的名称。

  • PCDATA是不是标记的文本。#PCDATA必须在混合内容声明中排在第一位。

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

  • 如果包含子元素,则运算符(*)必须遵循混合内容声明

  • (#PCDATA)和子元素声明必须由(|)运算符分隔。

以下是一个简单的示例,演示了DTD中的混合内容元素声明。

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>

<!DOCTYPE address [
   <!ELEMENT address (#PCDATA|name)*>
   <!ELEMENT name (#PCDATA)>
]>

<address>
   Here's a bit of text mixed up with the child element.
   <name>
      Tanmay Patil
   </name>
</address>

任何元素内容

您可以在内容中使用ANY关键字声明元素。它通常被称为混合类别元素。当您尚未决定元素的允许内容时,ANY会很有用。

句法

以下是声明具有任何内容的元素的语法-

<!ELEMENT elementname ANY>

在此,ANY关键字指示可以在<elementname>元素的内容中使用文本(PCDATA)和/或DTD中声明的任何元素。它们可以按任意顺序多次使用。但是,ANY关键字不允许您包含未在​​DTD中声明的元素。

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

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>

<!DOCTYPE address [
   <!ELEMENT address ANY>
]>

<address>
   Here's a bit of sample text
</address>
------分隔线----------------------------
标签(Tag):
------分隔线----------------------------
推荐内容
  • DTD-组件

    本章将从DTD角度讨论XML组件。 DTD基本上将包含以下XML组件的声明- 元件 属性 实体 元...

  • DTD-概述

    XML文档类型声明,通常称为DTD,是一种精确描述XML语言的方法。 DTD根据适当的XML语言...

  • H2数据库-备份

    BACKUP是用于将数据库备份放入单独的.zip文件中的命令。 对象没有被锁定,并且在进行...

  • H2数据库-更新

    UPDATE查询用于更新或修改表中的现有记录。 我们可以将WHERE子句与UPDATE查询一起使用...

  • H2数据库-插入

    SQL INSERT语句用于将新的数据行添加到数据库中的表。 句法 以下是INSERT INTO语句的...

  • H2数据库-选择

    Select命令用于从一个或多个表中获取记录数据。 如果我们设计一个选择查询,那么它将...

猜你感兴趣