XML—DTD、 Schema

目录

DTD是什么?

DTD有什么用途?

DTD与XML有什么联系?

DTD原理图

外部DTD

DTD文件book.dtd:

使用外部DTD文件的XML文件

PCDATA

XML 文档构建模块

一、元素

1、元素声明

①、有元素:

②、空元素:

③、ANY带有任何内容元素:

2、定义某个标签内元素个数(利用一些符号标识)

声明只出现一次的元素

声明最少出现一次的元素

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

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

声明或

声明混合型的内容

二、属性(ATTLIST)

①、语法:

②、类型

③、默认值

三、实体

内部实体声明

外部实体声明

四、命名空间

前缀标识法

Schema是什么?

为什么说Schema比DTD更强大呢(进步在哪儿了)?

使用有什么好处吗?

有哪些特点?

有哪些用途?

可保护数据通信

可扩展的,因为它们由XML编写通过可扩展的Schema定义,可以:

如何使用Schema?

验证XML是否符合Schema


DTD是什么?

Document Tye Definition,文档类型定义

DTD有什么用途?

它使用一系列合法的元素来定义文档的结构。

为xml文件提供语法与规则(方便数据共享,形成规则,大家读的时候都按xml文件读取)

PS:简而言之,DTD就是用来约束XML文档的,使其在一定的规范下使用,除了DTD技术外,还有Schema技术,也是用于约束XML文档的。

DTD与XML有什么联系?

DTD为XML文件提供语法与规则。我们知道XML的标记是可以自定义,每个人定义的不同,那进行数据共享的时候如何让别人看得懂呢?在编写XML的时候按照DTD来规范格式,比方说某个元素只能出现一次、各个子元素的顺序……这样形成规则,大家共享的时候都按xml文件读取

DTD原理图

XML—DTD、 Schema_第1张图片

外部DTD

DTD与XML的内容分别在不同的文件中:

DTD文件book.dtd:

    version:版本  encoding:文件使用的字符编码方法
  
  计算机书籍元素有3个元素:书名、价格、简要介绍
  子元素单独定义,书名元素为"#PCDATA" 类型

使用外部DTD文件的XML文件


PCDATA

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

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

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

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

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



XML 文档构建模块

一、元素

1、元素声明

①、有元素:

元素名称 (元素内容)>


②、空元素:

DTD中:
XML中:

③、ANY带有任何内容元素:

ANY>

DTD中:
XML中:刘伟
	     刘伟

2、定义某个标签内元素个数(利用一些符号标识)

XML—DTD、 Schema_第2张图片

声明只出现一次的元素

举例:

声明最少出现一次的元素

举例:

重复元素例子:

DTD中:
  
  


XML中:
<书籍列表>
	<计算机书籍>
  	<书名>J2EE教程
    <作者>张三
		<作者>李四
	

成组元素例子:

DTD中:
  
  


XML中:
<书籍列表>
	<计算机书籍>
  	<书名>J2EE教程
    <价格>100
    <书名>XML教程
		<价格>50
	

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

举例:

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

举例:

声明或

举例:

声明混合型的内容

子元素名称(#PCDATA|子元素名称)*>

举例:

PS:子元素要求顺序。


二、属性(ATTLIST)

①、语法:

DTD文件中:


XML文件中:

②、类型

XML—DTD、 Schema_第3张图片

③、默认值

XML—DTD、 Schema_第4张图片


三、实体

  • 实体是用于定义引用普通文本或特殊字符的快捷方式的变量
  • 实体引用是对实体的引用
  • 实体可在内部或外部进行声明

内部实体声明

DTD文件中:


XML文件中:
&writer;©right;

外部实体声明

DTD文件中:

XML文件中:
&writer


四、命名空间

在一个XML文档中,包含由多个DTD描述的元素。会出现名称冲突问题。

为了解决名称冲突问题,W3C的XML小组制定了被称为命名空间(NameSpace)的标准

前缀标识法

即在元素名和属性名前面增加一个标识,以唯一区分当前元素或属性来自哪一个DTD。


Schema是什么?

XML Schema Definitior(XSD)

XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。是基于XML的DTD替代者,要比DTD更强大

描述XML文档的结构,使用XML语法,自身也是XML文件的,规定XML元素顺序等等

为什么说Schema比DTD更强大呢(进步在哪儿了)?

  • XML Schema 可针对未来的需求进行扩展
  • XML Schema 更完善,功能更强大
  • XML Schema 基于 XML 编写
  • XML Schema 支持数据类型
  • XML Schema 支持命名空间

使用有什么好处吗?

不必学习新的语言

可使用XML编辑器来编辑Schema文件

可使用XML解析器来解析Schema文件

有哪些特点?

  • 定义可出现在文档中的元素
  • 定义可出现在文档中的属性
  • 定义哪个元素是子元素
  • 定义子元素的次序
  • 定义子元素的数目
  • 定义元素是否为空,或者是否可包含文本
  • 定义元素和属性的数据类型
  • 定义元素和属性的默认值以及固定值

有哪些用途?

可保护数据通信

  • 当数据从发送方被发送到接收方时,其要点是双方应有关于内容的相同的“期望值”
  • 通过Schema,发送方可以用一种接收方能够明白的方式来描述数据
  • 一种数据,比如“03-11-2004”,在某些国家被解释为11月3日,而在另一些国家为当作3月11日
  • 但是一个带有数据类型的XML元素,比如:2004-03-11,可确保对内容一致的理解,这是因为XML的数据类型“date”要求的格式是“YYYY-MM-DD”

可扩展的,因为它们由XML编写通过可扩展的Schema定义,可以:

  • 在其他Schema中重复使用您的Schema
  • 创建由标准类型衍生而来的您自己的数据类型
  • 在相同的文档中引用多重的Schema

如何使用Schema?

XML—DTD、 Schema_第5张图片

XML—DTD、 Schema_第6张图片


验证XML是否符合Schema

IE不能验证XML是否符合Schema

email.xsd文件中

 

	
		
			
			
			
			
			
		
	

email.xml文件中

 

	[email protected]
	[email protected]
	about loving
	I Love you forever
	2008-11-12

你可能感兴趣的:(xml,java,算法)