xml约束文档之DTD

DTD XML约束文档

文档类型定义(DTD)可定义合法的XML文档构建模块,它使用一系列合法的元素来定义文档的结构。DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用 。

1.内部声明文档

<?xml version="1.0"?>

<!DOCTYPE note [

<!ELEMENT note (to,from,heading,body)>

<!ELEMENT to      (#PCDATA)>

<!ELEMENT from    (#PCDATA)>

<!ELEMENT heading (#PCDATA)>

<!ELEMENT body    (#PCDATA)>

]>

<note>

<to>George</to>

<from>John</from>

<heading>Reminder</heading>

<body>Don‘t forget the meeting!</body>

</note>

以上 DTD 解释如下:

!DOCTYPE note (第二行)定义此文档是 note 类型的文档。

!ELEMENT note (第三行)定义 note 元素有四个元素:"to、from、heading,、body"

!ELEMENT to (第四行)定义 to 元素为 "#PCDATA" 类型

!ELEMENT from (第五行)定义 from 元素为 "#PCDATA" 类型

!ELEMENT heading (第六行)定义 heading 元素为 "#PCDATA" 类型

!ELEMENT body (第七行)定义 body 元素为 "#PCDATA" 类型

2.外部文档声明

<?xml version="1.0"?>

<!DOCTYPE note SYSTEM "note.dtd">

<note>

<to>George</to>

<from>John</from>

<heading>Reminder</heading>

<body>Don‘t forget the meeting!</body>

</note>

这是包含 DTD 的 "note.dtd" 文件:

<!ELEMENT note (to,from,heading,body)>

<!ELEMENT to (#PCDATA)>

<!ELEMENT from (#PCDATA)>

<!ELEMENT heading (#PCDATA)>

<!ELEMENT body (#PCDATA)

3.XML 文档构建模块

3.1 元素

3.2 属性

3.3 实体

3.4 PCDATA

PCDATA 的意思是被解析的字符数据(parsed character data)。

可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。

PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。

文本中的标签会被当作标记来处理,而实体会被展开。

不过,被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &amp;、              &lt; 以及 &gt; 实体来分别替换它们。

3.5 CDATA

CDATA 的意思是字符数据(character data)。

CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对                待,其中的实体也不会被展开。

4.DTD文档结构

4.1 元素

<!ELEMENT 元素名称 类别>

<!ELEMENT 元素名称 (元素内容)>

4.1.1 空元素

<!ELEMENT 元素名称 EMPTY>

4.1.2  PCDATA 的元素

<!ELEMENT 元素名称 (#PCDATA)>

4.1.3 带有任何内容的元素

<!ELEMENT 元素名称 ANY>

4.1.4 带有子元素(序列)的元素

<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>

4.1.5 声明只出现一次的元素

<!ELEMENT 元素名称 (子元素名称)>

4.1.6 声明最少出现一次的元素

<!ELEMENT 元素名称 (子元素名称+)>

4.1.7 声明出现零次或多次的元素

<!ELEMENT 元素名称 (子元素名称*)>

4.1.8 声明出现零次或一次的元素

<!ELEMENT 元素名称 (子元素名称?)>

4.1.9 声明“非.../既...”类型的内容

<!ELEMENT note (to,from,header,(message|body))>

4.1.10 声明混合型的内容

<!ELEMENT note (#PCDATA|to|from|header|message)*>

4.2  属性:属性通过 ATTLIST 声明来进行声明。

4.2.1 语法

<!ATTLIST 元素名称 属性名称 属性类型 默认值>

4.2.2 以下是属性类型的选项:

CDATA 值为字符数据 (character data)

(en1|en2|..)  此值是枚举列表中的一个值

ID  值为唯一的 id

IDREF 值为另外一个元素的 id

IDREFS  值为其他 id 的列表

NMTOKEN 值为合法的 XML 名称

NMTOKENS  值为合法的 XML 名称的列表

ENTITY  值是一个实体

ENTITIES  值是一个实体列表

NOTATION  此值是符号的名称

xml:  值是一个预定义的 XML 值

4.2.3 默认值参数可使用下列值:

值 属性的默认值

#REQUIRED 属性值是必需的

#IMPLIED  属性不是必需的

#FIXED value  属性值是固定的

4.3 实体

4.3.1 语法

内部实体声明 : <!ENTITY 实体名称 "实体的值">

外部实体声明 : <!ENTITY 实体名称 SYSTEM "URI/URL">

4.4 实例

<!DOCTYPE TVSCHEDULE [

<!ELEMENT TVSCHEDULE (CHANNEL+)>

<!ELEMENT CHANNEL (BANNER,DAY+)>

<!ELEMENT BANNER (#PCDATA)>

<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>

<!ELEMENT HOLIDAY (#PCDATA)>

<!ELEMENT DATE (#PCDATA)>

<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>

<!ELEMENT TIME (#PCDATA)>

<!ELEMENT TITLE (#PCDATA)>

<!ELEMENT DESCRIPTION (#PCDATA)>

<!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>

<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>

<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>

<!ATTLIST TITLE RATING CDATA #IMPLIED>

<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>

]>

时间: 2024-08-01 10:46:19

xml约束文档之DTD的相关文章

XML概念,约束文档,解析 笔记

XML的学习: 1.XML简介及语法: 2.XML的约束: DTD Schema 3.XML的解析:(*****重点) XML: What:eXtensible Markup Language(可扩展的标记语言.) <dog></dog> * HTML:超文本标记语言. 标记语言 :都会有一些标签.<html></html> <p></p> Why: * 用来处理大量有关系的数据. Where: * 用来作为软件的配置文件(SSH--

XML概念,约束文档,解析

day01总结 今日内容 l XML语法 l XML约束之DTD l XML解析器介绍 l XML解析之JAXP( DOM.SAX ) l DOM4J l Schema 一.XML语法 XML概述 1 什么是XML XML全称为Extensible Markup Language, 意思是可扩展的标记语言,它是 SGML(标准通用标记语言)的一个子集. XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的. W3C在1998年2月发布1.0版本: W3C

文档类型DTD,DOCTYPE和浏览器模式

出处:http://blog.csdn.net/freshlover/article/details/11616563 浏览器从服务端获取网页后会根据文档的DOCTYPE定义显示网页,如果文档正确定义了DOCTYPE浏览器则会进入标准模式(Standards Mode),否则浏览器会进入怪异模式或混杂模式(Quirks mode). 浏览器开发初期W3C倡导的网页标准并不流行,因此浏览器有独特的对网页标签或属性的解析模式,随着日后网页标准的流行,浏览器增加了对新标准的支持(Standards M

maven工程web层的web.xml配置文档内容

下面是web层,web.xml配置文档里面需要配置的东西: 1.lo4j配置 2.读取spring文件配置 3.设计路径变量值 4.spring字符集过滤器 5.登陆过滤器 6.springMVC核心配置 7.session过期时间 8.错误页面跳转 以下是实例: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSch

XML 存储文档

package com.kpsh.myself; import java.io.File;import java.io.FileWriter; import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.XMLWriter; public class ParseXML {   public static void main(String[] args)

PHP解析XML格式文档

<?php// 首先要建一个DOMDocument对象$xml = new DOMDocument();// 加载Xml文件$xml->load("3.xml");// 获取所有的post标签$postDom = $xml->getElementsByTagName("PROPERTIES");print_r($postDom);echo '<br>';// 循环遍历post标签    foreach($postDom as $post

HTML系列——文档类型DTD

文档类型通常是是HTML文件的第一行,DTD(Document Type Definition),它的作用是什么呢?文档类型定义是一种保证标准通用标记语言.可扩展标记语言文档格式正确的有效方法,可通过比较文档和文档类型定义文件来看文档是否符合规范,元素和标签使用是否正确.简单来说,就是告诉浏览器我的HTML文档代码是遵从哪个文档规范编写的,这样子浏览器才可以正确解析HTML语句,渲染DOM节点. 那么有哪些文档规范可以选择呢?(参照http://www.w3school.com.cn/tags/

tomcat web.xml的文档类型声明

Servlet 2.2 2.3所使用的文档类型为dtd文件 Servlet 2.4所使用的文件为xsd文件 <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ht

html4.0.1,h5,xml,文档声明区别

<!DOCTYPE> 声明不是 HTML 标签:它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令. 提示:请始终向 HTML 文档添加 <!DOCTYPE> 声明,这样浏览器才能获知文档类型. 在 HTML 4.01 中,<!DOCTYPE> 声明引用 DTD,因为 HTML 4.01 基于 SGML.DTD 规定了标记语言的规则,这样浏览器才能正确地呈现内容. HTML5 不基于 SGML,所以不需要引用 DTD. 在 HTML 4.01 中有三