概述
XML(eXtensible markup Language),DTD(文档类型定义)
XML是一种元标记语言
XML描述的是内容结构和内容语义,而不是格式(HTML);拆分了内容和显示(HTML是内容与显示相结合的)
XML是一种树形结构的面向对象编程,我们可以去解析这个树中我们需要的元素来获取信息。
总而言之,XML是棵树,DTD是对XML的规范
元素(成对出现,可以嵌套),根元素(有且只有一个根元素)
<?xml version="1.0"?> <students> <student> <id>112</id> <student> <student> <id>123</id> </student> </students>
<students>就是根元素标签,从上面的xml代码可以看出xml表达的结构和语义
1内容结构:学生们中有两个学生,每个学生有id
2内容语义:112,,123
XML的祖先是GML
XML解析器:读取XML并提供对文档内容的访问的软件模块。XML编写,解析,验证
XML样式单:可用CSS或XSL写
我们极力向您传递的理念是:元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素。
构成
所有的 XML 文档(以及 HTML 文档)均由以下简单的构建模块构成:
- 属性
- 实体(a user-defined Entity is avaliable)
内部 | 外部 | |
规范在DTD中,在xml可解析段中使用 | <!ENTITY 实体名称 实体值> | <!ENTITY 实体名称 SYSTEM 路径> |
定义在DTD中,在DTD中使用 | <!ENTITY %实体名称 实体值> | <!ENTITY %实体名称 SYSTEM 路径> |
- PCDATA (parsed character data)
- CDATA (character data),并不被解析
- 注释 <!-- -->
- 处理指令
Vaild XML有两个条件
1格式良好(well-formed)
2满足DTD的限制(可以类比类与对象,对象:具体XML文档,类:DTD文档,也可类比表结构和具体表)
DTD
元素:<!ELEMENT NAME (TYPE(EMPTY,ANY) | ()) >
属性:<!ATTLIST EleName AttName TPYE DefaultValue>
XML命名空间(Namespace)
命名空间出现的原因:由于XML文档元素是自定义的,所以两个不同的文档使用相同的名称描述两个不同类型的元素的时候,就会发生命名冲突。命名空间可以解决种冲突
XML Schema
(XML Schema 是基于 XML 的 DTD 替代者)
Schema用于验证xml文档,而Schema由一个特别定义的DTD来验证
Schema数据类型:
1简单类型 built-in data type,通过simpleType自定义的数据类型
2复杂类型 通过complexType自定义的数据类型
ref,group(group,attributeGroup),substitionGroup
Schema中的element(name,type)
Schema中的attribute(name,type,use)
simpleType and complexType
simpleType类型的元素没有子元素,也没有属性;当定义的元素有子元素或者是属性的时候必须用complexType
simpleContext,用于complexType元素上,用于限定该complexType的内容类型,表示该complexType没有子元素,那么同时该complexType就需要有属性了。
怎么判断Schema的根元素?