DTD元素分析
发布时间:2023-09-22 12:41:07 所属栏目:教程 来源:
导读:XML元素可以定义为XML文档的构建块。元素可以表现为容纳文本,元素,属性,媒体对象或所有元素的容器。
使用ELEMENT声明声明DTD元素。 当DTD验证XML文件时,解析器初始检查根元素,然后验证子元素。
语法
所
使用ELEMENT声明声明DTD元素。 当DTD验证XML文件时,解析器初始检查根元素,然后验证子元素。
语法
所
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为空元素。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 Su</name> <company>Yiibai Yiibai</company> <phone>(086) 123-22334567</phone> </address> 在上面的示例中,address是父元素,而name,company和phone_no是它子元素。 运算符和语法规则列表 下表显示了可用于定义子元素的运算符和语法规则列表 - 运算符 语法 描述 + <!ELEMENT element-name (child1+)> 它表示子元素可以在父元素内部出现一次或多次。 * <!ELEMENT element-name (child1*)> 它表示子元素在父元素内可以出现零次或多次。 ? <!ELEMENT element-name (child1?)> 它表示子元素可以在父元素内部出现零次或一次。 , <!ELEMENT element-name (child1, child2)> 它给出了由逗号分隔的子元素序列,它必须包含在元素名称中。 Ι <!ELEMENT element-name (child1 Ι child2)> 它允许在子元素中进行选择。 规则 如果有多个元素内容,需要遵循某些规则 - 序列 - 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关键字声明元素。 它通常被称为混合类别元素。 当您尚未决定元素的允许内容时,就可以使用ANY关键字。 语法 以下是使用任何内容声明元素的语法 - <!ELEMENT elementname ANY> 这里,ANY关键字表示文本(PCDATA)和/或DTD中声明的任何元素都可以在<elementname>元素的内容中使用。 它们可以任意次数使用。 但是,ANY关键字不允许包含未在DTD中声明的元素。 示例 以下是一个简单的示例,演示了包含任何内容的元素声明 - <?xml version = 1.0 encoding = UTF-8 standalone = yes ?> <!DOCTYPE address [ <!ELEMENT address ANY> ]> <address> Here's a bit of sample text </address> (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |