XSD使用介绍
一.XSD的schema 元素
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace = "http://www.eUdstand.com.cn/eUdstand-module"
xmlns = "http://www.eUdstand.com.cn/eUdstand-module"
elementFormDefault = "qualified"
>
</xs:schema>
1.1 xmlns:xs
xmlns:xs="http://www.w3.org/2001/XMLSchema"
显示 schema 中用到的元素和数据类型来自命名空间 “http://www.w3.org/2001/XMLSchema”。同时它还规定了来自命名空间 “http://www.w3.org/2001/XMLSchema” 的元素和数据类型应该使用前缀 xs:
1.2 targetNamespace
targetNamespace = "http://www.eUdstand.com.cn/eUdstand-module"
显示被此 schema 定义的元素 (note, to, from, heading, body) 来自命名空间: “http://www.eUdstand.com.cn/eUdstand-module”。
1.3 xmlns
targetNamespace = "http://www.eUdstand.com.cn/eUdstand-module"
指出默认的命名空间是 “http://www.eUdstand.com.cn/eUdstand-module”。
1.4 elementFormDefault
elementFormDefault = "qualified"
指出任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定。
二.XSD的简易元素(simpleType)
定义简易元素的语法:<xs:element name=“xxx” type=“yyy”/>
此处 xxx 指元素的名称,yyy 指元素的数据类型。XML Schema 拥有很多内建的数据类型。
最常用的类型是:
- xs:string
- xs:decimal
- xs:integer
- xs:boolean
- xs:date
- xs:time
定义属性的语法是:<xs:attribute name=“xxx” type=“yyy”/>
在此处,xxx 指属性名称,yyy 则规定属性的数据类型。XML Schema 拥有很多内建的数据类型。
最常用的类型是:
- xs:string
- xs:decimal
- xs:integer
- xs:boolean
- xs:date
- xs:time
限定(restriction)用于为 XML 元素或者属性定义可接受的值。
如下是对值的限定:
<xs:attribute name = "load-on-startup" ><xs:simpleType><xs:restriction base="xs:integer"><xs:minInclusive value="-100"></xs:minInclusive><xs:maxInclusive value="100"></xs:maxInclusive></xs:restriction></xs:simpleType></xs:attribute>
三.XSD的复杂元素(complexType)
复合元素包含了其他的元素及/或属性。
通过指示器,我们可以控制在文档中使用元素的方式。
指示器
有七种指示器:
Order 指示器:Order 指示器用于定义元素的顺序。
-All:指示器规定子元素可以按照任意顺序出现,且每个子元素必须只出现一次
-Choice :指示器规定可出现某个子元素或者可出现另外一个子元素(非此即彼)
Sequence (规定子元素必须按照特定的顺序出现)
Occurrence 指示器: 指示器用于定义某个元素出现的频率
- maxOccurs:指示器可规定某个元素能够出现的最大次数
- minOccurs:指示器可规定某个元素能够出现的最小次数
Group 指示器:暂不分析
- Group name:暂不分析
- attributeGroup name:暂不分析
<xs:element name="eUdstand-module" type = "EudstandModuleType"></xs:element><xs:complexType name = "ModuleVersionType" ><xs:all><xs:element name = "module-name" type = "xs:string" minOccurs="1"maxOccurs="1"></xs:element><xs:element name = "module-title" type = "xs:string" minOccurs="1"maxOccurs="1"></xs:element><xs:element name = "module-version" type = "xs:string" minOccurs="1"maxOccurs="1"></xs:element></xs:all></xs:complexType><xs:complexType name = "EudstandModuleType"><xs:all><xs:element name = "module-config" type = "ModuleVersionType" minOccurs="1"maxOccurs="1"></xs:element></xs:all></xs:complexType><xs:attribute name = "load-on-startup" ><xs:simpleType><xs:restriction base="xs:integer"><xs:minInclusive value="-100"></xs:minInclusive><xs:maxInclusive value="100"></xs:maxInclusive></xs:restriction></xs:simpleType></xs:attribute>
四.XSD转xml和JAXBclass文件
通过eclipse工具,右键xsd文件,选择generate …
xsd 转 jaxb class文件 也可以通过jdk xjc命令
包含xjc命令xsdToClass 文件 所在位置
xsdToClass 文件内容:
xjc -encoding utf-8 -d src/main/java -p com.personal.eudstand.core.module.type src/main/resources/eUdstand-module.xsd
-d 输出目录
-p 生成的目录
src/main/resources/eUdstand-module.xsd 表示xsd文件位置
五.xml的xmlns元素
xmlns:全名是xml namespace,也即是为当前的这个xml指定命名空间。
xmlns:xsi:是指当前xml所要遵循的标签规范.
如上hdp, xsi, aop, cache, context, mvc…都是当前xml要使用到的一个标签,后面就是指定标签所要遵循的规范。
xsi:schemaLocation:指定的命名空间对应的验证文件,用来定义xml schema的地址,也就是xml书写时需要遵循的语法,用于声明了目标命名空间的模式文档。。两部分组成,前面部分就是命名空间的名字,后面是xsd(xmlschema)的地址,也是就表示把定义这个命名空间的schema文件给引用进来,好让eclipse这类型工具能够解析和验证你的xml文件是否符合语法规范。等同于。用于声明了目标命名空间的模式文档。
<?xml version="1.0" encoding="UTF-8"?>
<eUdstand-module xmlns="http://www.eUdstand.com.cn/eUdstand-module" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eUdstand.com.cn/eUdstand-module eUdstand-module.xsd " load-on-startup = "-10"><module-config><module-name>eUdstand-core</module-name><module-title>易晰报表核心模块</module-title><module-version>1.0.0</module-version></module-config>
</eUdstand-module>