Java XML Schema详解

1.所有Schema文档的根元素都是

Schema

2.命名空间:

为什么使用命名空间:

避免元素名冲突

命名空间的语法定义:

xmlns:[prefix]="URL"

元素和属性都可以应用命名空间

命名空间测试:

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

<test>

<h:table xmlns:h="http://www.baidu.com/xml">

<h:tr>

<h:td>Apples</h:td>

<h:td>Bananas</h:td>

</h:tr>

</h:table>

<f:table xmlns:f="www.sina.com.cn/xml">

<f:name>African Coffee Table</f:name>

<f:width>80</f:width>-*

<f:length>120</f:length>

</f:table>

</test>。

3.XML Schema是用一套预先规定的XML元素和属性创建的, 这些元素和属性定义了XML文档的结构和内容模式,规定XML文档实例结构和每个元素/属性的数据类型

4.为何要Schema:

①Schema基于XML语法

②Schema可以用能处理XMl文档的工具处理

③Schema大大扩充了数据类型,可以自定义数据类型

④Schema支持元素的继承-Object-Oriented

⑤Schema支持属性组.

5.Schema的数据类型:

string

boolean

decimal

float

double

duration

dateTime

date

hexBinary

anyURI

NOTATION

扩展的数据类型:

ID

IDREF

ENTITY

NMTOKEN

NMTOKENS

long

int

short

byte

数据类型的特性

enumeration

fractionDigits

length

maxExclusive

maxInclusive

maxLength

minExclusive

minInclusive

minLength

Pattern

6.Schema的数据类型:

  • 简单的数据类型:

    内置的数据类型(built-in data types)

①基本的数据类型

②扩展的数据类型

用户自定义的数据类型(通过simpleType定义)

  • 复杂数据类型(通过complexType定义)

7.Schema的元素类型:

schema

element

attribute

group

attributeGroup

simpleType

simpeContent

complexType

8.schema元素:

作用:包含已经定义的schema

用法:<xs:schema>

属性:

xmlns

targetNamespace

9.element元素:

属性:

name

type

ref

minOccurs

maxOccurs

substitutionGroup

fixed

default

10.attribute元素:

作用:声明一个属性

属性:name/type/ref/use

11.attributeGroup元素:

作用:把一组属性组合在一起,以便可以被符合类型应用

属性: name/ref

12.simpleType(元素):

作用:定义一个简单类型,它决定了元素和属性的约束和相关信息

属性:name

内容:应用已经存在的简单类型,三种方式:

--restrict 限定一个范围

--list 从列表中选择

--union 包含一个值的结合

子元素为<xs:list>

从一个特定数据类型的集合中选择定义一个简单的类型元素

子元素为:<xs:union>

从一个特定简单的数据类型的集合中选择定义一个简单类型元素

13.complexType元素:

作用:定义一个符合类型,它决定了一组元素和属性的约束和相关信息

属性:name

14.complexType和simpleType区别(重要)

simpleType类型的元素中不能包含元素或者属性

当需要声明一个元素子元素或属性时,用complexType

当需要机遇内置的基本数据类型定义一个新的数据类型的时,用simpleType

15.simpleContent元素:

作用:应用于complexType,对它的内容进行约束和扩展.表示该complexType需要有属性,否则它就成为了simpleType了

16.choice元素:

作用:允许唯一的一个元素从一个组中被选择

属性:minOccurs/maxOccurs

17.sequence元素:

作用:给一组元素一个特定的序列

18.用schema的数据类型及元素类型声明XML文档的元素和属性

声明元素:

<xs:element>

声明属性

<xs:attribute>

18.<xs:element name=”redDog” type=”xs:string” substitutionGroup=”dog”/>

19.通过DOCTYPE可以明确指定根元素,因为DOCTYPE后面跟的元素就是文档的根元素;通过Schema是没法指定目标XML文档的根元素,XMLSPY是通过推断哪个元素包含了其他元素来选择包含其他元素最多的那个元素作为文档的根,但我们可以明确指定文档的根而不必按照xmlspy的生成来做.

20.简单工厂模式:

简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式. 简单工厂模式是由一个工厂对象决定创建出那一种产品类的实例. 通常它根据自变量的不同返回不同的类的实例.

简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建出哪一个产品类的实例.

21.简单工厂模式的构成:

工厂(Creator)角色:担任这个角色的是简单工厂模式的核心, 含有与应用紧密相关的商业逻辑. 工厂类在客户端的直接调用下创建产品对象, 它往往由一个具体类实现.

抽象产品(Product)角色:担任这个角色的类是简单工厂模式所创建的对象的父类. 或他们共同拥有的接口. 抽象产品角色可以用一个接口或抽象类实现.

具体产品(Concrete Product)角色:简单工厂模式所创建的任何对象都是这个角色的实例, 具体产品角色由一个具体类实现.

22.Dom:Document Object Model(文档对象模型)

23.对于XML应用开发来说,DOM就是一个对象化的XML数据接口,一个与语言无关,与平台无关的标准接口规范.

24.要严格区分XML文档树中的根节点与根文档节点:根节点(Document)代表XML文档本身,是我们解析XML文档的入口,根元素节点则表示XML文档的根元素,它对应于XML文档的Root.

25.最常见的节点类型:

元素:元素是XML的基本构件. 典型地, 元素可以有其他元素, 文本节点或者两者都有来作为其子节点. 元素节点还是可以有属性的唯一类型节点.

属性: 属性节点是包含关于元素节点的信息, 但实际上, 不认为它是元素的子节点.

文本: 确切来讲, 文本节点是:文本. 它可以包含许多信息或仅仅是空白.

文档(根节点): 文档节点是整个文档中所有其他节点的父节点.(根节点不等于根元素节点.)

较不常见的节点类型: CDATA,注释, 处理指令.

26.Node:

27.常见的使用DOM解析xml文件的过程:

① 获得dom解析器工厂(工作的作用是用于创建具体的解析器)

②获得具体的DOM解析器

③解析一个xml文档,获得document对象(根节点)

④获得节点的集合

⑤对每个元素经行访问.

28. JAXP(Java API for XML Parsing):用于XML解析的Java API

29.DocumentBuilderFactory与DocumentBuilder之间的关系:

30.特别注意: 对于XML文件,空格也是子节点.

31.SAX的全称是Simple APIs for XML, 面向XML的简单APIs

32. 使用DOM解析XML时,首先将XML文档加载到内存中, 然后可以通过随机的方式访问内存中的DOM树; SAX是基于事件而且是顺序执行的,一旦经过了某个元素, 我们就没有办法再去访问它了,SAX不必实现将整个XML文档加载到内存中, 因此它占据内存要比DOM小, 对于大型的XML文档来说, 通常会使用SAX而不是DOM经行解析.

33.使用SAX解析文档的三个步骤:

①获得SAX解析器工厂实例:

SAXParserFactory factory = SAXParserFactory.newInstance();

②获得SAX解析器实例:

SAXParser parser = factory.newSAxParser();

③开始进行解析:

34.JDOM

35.方法链编程风格(method chain style)

36.对于JDOM的Format

37.Dom4J: