WebService学习笔记(二) - XML的dtd和schema
来源:互联网 发布:淘宝消字灵是真的么 编辑:程序博客网 时间:2024/06/07 19:42
一 DTD简单介绍
不解释,参看w3cschool
xml代码:
<?xml version="1.0" encoding="UTF-8"?><!ELEMENT classroom (claName,grade,students)><!ATTLIST classroom id ID #REQUIRED><!ELEMENT claName (#PCDATA)><!ELEMENT grade (#PCDATA)><!ELEMENT students (student+)><!ELEMENT student (id,stuName,age)><!ELEMENT id (#PCDATA)><!ELEMENT stuName (#PCDATA)><!ELEMENT age (#PCDATA)>
xml代码:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE classroom SYSTEM "classroom.dtd"><classroom id="c1"> <claName>10计算机应用技术</claName> <grade>2010</grade> <students> <student> <id>1</id> <stuName>zhangsan</stuName> <age>12</age> </student> <student> <id>2</id> <stuName>lisi</stuName> <age>122</age> </student> </students></classroom>
二 schema入门
schema出现的目的是通过一个更加合理的方式来编写xml的限制文件(基于xml语法的方式),可以使用命名空间来支持多个名称相同的元素防止命名冲突,可以很好的完成对java或者所有对象的修饰并且提供了大量的数据类型。
2.1 命名空间
xml代码:
<?xml version="1.0" encoding="UTF-8"?><schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/01" xmlns:tns="http://www.example.org/01" elementFormDefault="qualified"> <element name="user"> <complexType> <sequence> <element name="id" type="int"/> <element name="username" type="string"/> <element name="born" type="date"/> </sequence> </complexType> </element></schema>
xmlns=”http://www.w3.org/2001/XMLSchema” : schema的默认名称空间,不能修改,但是可以增加前缀,如果增加前缀之后就意味着所有的element等元素都需要增加前缀。
targetNamespace 自已这个文档的命名空间,可以方便其它xml或者schema文件引用
xmlns:tns 此处的名称和自己的名称空间的名称一致,但是增加了tns的前缀,此时如果要引用当前文件所创建的类型,需要加上tns前缀
在xml中引入schame
xml代码:
<?xml version="1.0" encoding="UTF-8"?><user xmlns="http://www.example.org/01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/01"> <id>1</id> <username>zhangsan</username> <born>1989-12-22</born></user>
xmlns:xsi 创建了一个可以引入其它schema文件的命名空间
xsi:schemaLocation 引入其它命名空间, 如果要在eclipse中使用命名空间的引入,需要为xml增加xml的cataloge
如果不希望通过命名空间来引入schema,可以使用文件路径来引入
xml代码:
xsi:noNamespaceSchemaLocation="01.xsd"
2.2 元素和属性
sequence : 元素必须按顺序出现
choice : 多个元素中选择一个
all: 元素的出现顺序可以为任意,但相同的元素只能有一个
注意,属性的定义在sequence之后。
xml代码:
<element name="books"> <complexType> <!-- maxOccurs表示最大出现次数 --> <sequence maxOccurs="unbounded"> <element name="book"> <complexType> <sequence minOccurs="1" maxOccurs="unbounded"> <element name="title" type="string" /> <element name="content" type="string" /> <choice> <element name="author" type="string" /> <element name="authors"> <complexType> <all><!-- 每个元素只能出现一次 --> <element name="author" type="string"/> </all> </complexType> </element> </choice> </sequence> <attribute name="id" type="int" use="required"/> </complexType> </element> </sequence> </complexType> </element>
2.3 相关约束
三 深入schema
3.1 数据模型的创建
通常一个类对一个schame文件,通过包含引用,需保证在同一个命名空间内
3.2 相关的设计方案
3.2.1 Russian Doll
只有一个根元素,通过嵌套的方式完成编写
优点:结构清晰,根元素只有一个
缺点:元素无法重用
3.2.2 Salami Slice
优点:能够进行最大化重用
缺点:根元素不清晰
xml代码:
<element name="book" type="tns:bookType"></element> <element name="id" type="int"/> <element name="title" type="string"/> <element name="content" type="string"/> <complexType name="bookType"> <sequence> <element ref="tns:id"/> <element ref="tns:title"/> <element ref="tns:content"/> </sequence> </complexType>
3.2.3 Venetian Blind
一个根结点,通过simpleType完成重用。
xml代码:
<element name="person" type="tns:personType"/> <complexType name="personType"> <sequence> <element name="name" type="string"/> <element name="age" type="tns:ageType"/> <element name="email" type="tns:emailType"/> </sequence> <attribute name="sex" type="tns:sexType"/> </complexType> <simpleType name="emailType"> <restriction base="string"> <pattern value="(\w+\.*)*\w+@\w+\.[A-Za-z]{2,6}"/> <minLength value="6"/> <maxLength value="255"/> </restriction> </simpleType> <simpleType name="ageType"> <restriction base="int"> <minInclusive value="1"/> <maxExclusive value="150"/> </restriction> </simpleType> <simpleType name="sexType"> <restriction base="string"> <enumeration value="男"/> <enumeration value="女"/> </restriction> </simpleType>
3.3 shema与java的转换
使用xjc可以完成schema到java的转换
- WebService学习笔记(二) - XML的dtd和schema
- xml学习笔记——dtd和schema
- JavaWeb学习笔记之xml&DTD&schema
- 学习笔记-XML、DTD与Schema
- DTD和XML Schema
- DTD和XML Schema
- XML、DTD和Schema
- webservice初次相识之XML限制文件DTD和Schema
- XML中Schema和DTD的区别
- XML的DTD约束和Schema约束
- XML DTD和XML Schema
- XML Schema和XML DTD
- XML DTD和XML Schema
- XML DTD和XML Schema
- XML DTD和XML Schema
- WebService学习笔记-XML&Schema&HTTP
- DTD和XML Schema(XML 模式)的比较
- XML DTD和XML SCHEMA以及命名空间的作用
- javaweb基础(JSP)
- Java并发之不可思议的死循环
- ARC 065C DayDream Trie+暴力
- 【leetcode】48. Rotate Image
- Java基础Day06笔记
- WebService学习笔记(二) - XML的dtd和schema
- 鸟人的Android揭秘(1)——源代码构成
- |洛谷|搜索|NOIP2008|P1149 火柴棒等式
- 第三节 利用curl获取access_token和微信服务器地址
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
- 使用LinkedList存储一副扑克牌(除开大小王),实现洗牌功能。
- 微痕迹捐赠说明
- Day06难点
- PAT B1061