- 浏览: 555927 次
- 性别:
文章分类
- 全部博客 (337)
- WEB前端@HTML (4)
- WEB前端@CSS (5)
- WEB前端@javascript (31)
- WEB前端@DHTML (8)
- WEB前端@jQuery (3)
- WEB前端@Flex4 (19)
- WEB前端@BootStrap3 (21)
- 数据交换@JSON (1)
- 模板标签@JSTL (1)
- 模板标签@Thymeleaf (1)
- 模板标签@XSL-FO (3)
- WEB后台@JavaSE (75)
- WEB后台@JAX-WS (27)
- WEB后台@HttpClient (0)
- WEB后台@SSO (2)
- 框架@Spring3 (3)
- 框架@spring_MVC (8)
- 框架@Hibernate (26)
- 框架@play framework (18)
- 框架@sl4j (4)
- 数据库@ (2)
- 数据库@JDBC (0)
- 服务器@Linux (14)
- 服务器@Tomcat (2)
- 第三方jar@dom4j (1)
- 第三方jar@POI (2)
- 第三方jar@CXF (5)
- 项目管理@Maven (22)
- 项目管理@SVN (1)
- 缓存管理@ehcache (1)
- 系统设计@设计模式 (10)
- 单元测试@JunitTest (1)
- 开发工具 (3)
- BUG收录 (1)
- 学习之路 (6)
- 面试之道 (1)
- 我的项目 (2)
最新评论
-
superich2008:
logback配置文件的改动会导致应用重新加载,多改动几次后就 ...
Chapter 3: Logback configuration -
chenzhihui:
不是可以在log4j中配置以控制台或者文件方式保存日志的?
play记录日志 -
smilease:
很棒,正缺这个,非常感谢
bootstrap3-typeahead 自动补全 -
guangling13345:
[size=x-small][/size]
二级联动菜单 -
jacksondesign:
有,和YAML的格式有关,不知道有没有什么好的YAML格式的验 ...
(四)play之yabe项目【页面】
Schema的好处
schema出现的目的:通过一个更加合理的方式来编写xml的限制文件,而且是基于xml语法的方法
使用Schema来规范限制xml的编写
schema通过命名空间来支持多个名称相同的元素
命名空间:避免元素间的冲突,比如同名元素(类似于java中package的作用)
schema可以很好的完成对java或者所有对象的修饰,并且提供了大量的数据类型来定义元素
命名空间
01.xsd
将schema加入到eclipse的目录册中
window-->preference-->XML-->xml catalog-->User Specified Entries-->add
Catalog Entry-->
Location:workspace或者文件目录中找到对应的xsd文件
Key type:System ID
Key:自动加载
引入schema,编写xml
通过targetNamespace引入schema(default namespace)
通过xsd的路径引入schema(location)
--------------------------------------------------------
schema中控制元素
02.xsd
02.xml
-------------------------------------
schema的几种编写方式
1.Russian Doll
只有一个根元素,通过嵌套的方式完成编写。
优点:根元素只有一个,结构清晰,方便定位。
缺点:无法实现类型的重用。
如,02.xsd
2.Salami Slice
缺点:有多个根元素,结构非常不清晰
优点:最大化实现类型重用
3.Venetian Blind 百叶窗(推荐)
综合上面2种编写方式的优点而成
04.xsd
04.xml
使用多个schema完成一个任务(schema的重用)
student.xsd
class.xsd
使用classroom.xsd结合student.xsd完成classroom.xml的编写
使用xjc(xml java change)将schema转换为java文件
cmd命令行:
将src目录下的classroom.xsd转为java放入xjc_01目录中
C:\Users\lenovo>xjc -d E:\technology-hqh\proj\webservice\JAX-WS\xjc_01 E:\technology-hqh\proj\webservice\JAX-WS\schema\src\classroom.xsd
parsing a schema...
compiling a schema...
org\example\classroom\ClassroomType.java
org\example\classroom\ObjectFactory.java
org\example\classroom\SexType.java
org\example\classroom\StuType.java
org\example\classroom\package-info.java
schema出现的目的:通过一个更加合理的方式来编写xml的限制文件,而且是基于xml语法的方法
使用Schema来规范限制xml的编写
schema通过命名空间来支持多个名称相同的元素
命名空间:避免元素间的冲突,比如同名元素(类似于java中package的作用)
schema可以很好的完成对java或者所有对象的修饰,并且提供了大量的数据类型来定义元素
命名空间
01.xsd
<?xml version="1.0" encoding="UTF-8"?> <!-- 1. xmlns 指定命名空间(默认的标准命名空间,一个标准,由eclipse自动已经加载了)由于是默认的命名空间,其中的所有元素可以直接访问,不用加前缀修饰 2. xmlns:tns 指定额外的命名空间,需要加前缀修饰才能访问到(外部通过tns前缀来访问本schema中定义的元素 ) (比如,要访问http://www.example.org/01位置对于的schema就要使用<tns:xx></tns:xx>来指名) 3. 不加前缀的命名空间即为默认命名空间,只能存在一个默认命名空间 4.targetNamespace 指定通过目标命名空间的位置,外部只要通过这个地址就能引用到对应的schema(外部通过这个地址来定位本schema) --> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/01" xmlns:tns="http://www.example.org/01" elementFormDefault="qualified"> <!-- 定义user对象的schema --> <element name="user"> <!-- user为复杂类型 --> <complexType> <sequence> <element name="id" type="ID"/> <element name="uname" type="string"/> <element name="born" type="dateTime"/> </sequence> </complexType> </element> </schema>
将schema加入到eclipse的目录册中
window-->preference-->XML-->xml catalog-->User Specified Entries-->add
Catalog Entry-->
Location:workspace或者文件目录中找到对应的xsd文件
Key type:System ID
Key:自动加载
引入schema,编写xml
通过targetNamespace引入schema(default namespace)
<?xml version="1.0" encoding="UTF-8"?> <!-- 引入schema 1.xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 获取schema的一个实例,通过它可以引入其他的schema 2.xsi:schemaLocation="http://www.example.org/01" 通过实例引入一个指定targetNamespace的schema 3.将引入的schema作为本xml的默认命名空间,就可以直接访问其中定义好的元素了 --> <user xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/01" xmlns="http://www.example.org/01"> <id>1</id> <uname>zhangsan</uname> <born>1999-09-09</born> </user>
通过xsd的路径引入schema(location)
<?xml version="1.0" encoding="UTF-8"?> <!-- 引入schema 1.xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 获取schema的一个实例,通过它可以引入其他的schema 2.xsi:noNamespaceSchemaLocation="01.xsd" 通过xsd文件的路径来引入,而不是使用schema的targetNamespace引入的 3.将引入的schema作为本xml的默认命名空间,就可以直接访问其中定义好的元素了 --> <user xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="01.xsd" xmlns="http://www.example.org/01"> <id>2</id> <uname>lisi</uname> <born>2000-11-11</born> </user>
--------------------------------------------------------
schema中控制元素
02.xsd
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/02" xmlns:tns="http://www.example.org/02" elementFormDefault="qualified"> <element name="books"> <complexType> <sequence maxOccurs="unbounded"> <element name="book"> <complexType> <!-- 给book定义元素 --> <!-- sequence中定义的元素在xml中需要按顺序编写 --> <!-- minOccurs最少出现次数 maxOccurs最大出现次数 (unbounded无限的) --> <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> <!-- 最少1个作者,最多5个作者 --> <sequence minOccurs="1" maxOccurs="5"> <element name="author" type="string" /> </sequence> </complexType> </element> </choice> </sequence> <!-- 给 book定义属性(注意:属性定义需要放在sequence之后) --> <attribute name="id" type="int" use="required"/> </complexType> </element> </sequence> </complexType> </element> </schema>
02.xml
<?xml version="1.0" encoding="UTF-8"?> <book:books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/02" xmlns:book="http://www.example.org/02"> <book:book id="1"> <book:title>Think in Java</book:title> <book:content>java is good</book:content> <book:author>foreigner</book:author> </book:book> <book:book id="2"> <book:title>IT</book:title> <book:content>XXXX</book:content> <book:authors> <book:author>YY</book:author> </book:authors> </book:book> </book:books>
-------------------------------------
schema的几种编写方式
1.Russian Doll
只有一个根元素,通过嵌套的方式完成编写。
优点:根元素只有一个,结构清晰,方便定位。
缺点:无法实现类型的重用。
如,02.xsd
2.Salami Slice
缺点:有多个根元素,结构非常不清晰
优点:最大化实现类型重用
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/03" xmlns:tns="http://www.example.org/03" elementFormDefault="qualified"> <!-- 指名使用tns命名空间中的bookType 由于默认命名空间是http://www.w3.org/2001/XMLSchema 因此,在访问其它命名空间中定义的元素时,就需要加收前缀,比如本schema的前缀为tns --> <element name="book" type="tns:bookType"></element> <element name="id" type="int"></element> <element name="title" type="string"></element> <element name="content" type="string"></element> <complexType name="bookType"> <sequence> <element ref="tns:id"/> <element ref="tns:title"/> <element ref="tns:content"/> </sequence> </complexType> </schema>
3.Venetian Blind 百叶窗(推荐)
综合上面2种编写方式的优点而成
04.xsd
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/04" xmlns:tns="http://www.example.org/04" elementFormDefault="qualified"> <!-- 只有一个根元素 --> <element name="person" type="tns:personType"></element> <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专用于定义类型,实现类型的重用 --> <simpleType name="ageType"> <!-- 基于age的约束 --> <restriction base="int"> <!-- 最小包含1 --> <minInclusive value="1"></minInclusive> <!-- 最大包含120 --> <maxInclusive value="120"></maxInclusive> </restriction> </simpleType> <simpleType name="sexType"> <restriction base="string"> <enumeration value="男"></enumeration> <enumeration value="女"></enumeration> <enumeration value="未知"></enumeration> </restriction> </simpleType> <simpleType name="emailType"> <restriction base="string"> <!-- 正则表达式验证 ^ 开始 * 0或多次 ? 0或1次 + 1或多次 \. 转义后表示本身,即. $ 结尾 --> <pattern value="\w+[-_]?\w+@\w+\.[A-Za-z]{2,3}"></pattern> <minLength value="6"></minLength> <maxLength value="20"></maxLength> </restriction> </simpleType> </schema>
04.xml
<?xml version="1.0" encoding="UTF-8"?> <person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="04.xsd" xmlns="http://www.example.org/04" sex="未知"> <name>wahaha</name> <age>120</age> <email>schy_hqh@def.hik</email> </person>
使用多个schema完成一个任务(schema的重用)
student.xsd
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:stu="http://www.example.org/classroom" targetNamespace="http://www.example.org/classroom" elementFormDefault="qualified"> <!-- 注意: 1.在student.xsd中,命名空间前缀为stu 要想被class.xsd引用的话,前缀不能相同,否则会报错,所以在student.xsd中, 引用自己定义的类型时,通过stu前缀来访问 2.student.xsd中定义的stuType要想在class.xsd中被重用, 将命名空间设置为与class.xsd的命名空间一致,都为http://www.example.org/classroom --> <xsd:element name="student" type="stu:stuType"/> <!-- 学生类型 --> <xsd:complexType name="stuType"> <xsd:sequence> <xsd:element name="name" type="xsd:string" /> <xsd:element name="sex" type="stu:sexType" /> </xsd:sequence> </xsd:complexType> <!-- 性别类型 --> <xsd:simpleType name="sexType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="男"></xsd:enumeration> <xsd:enumeration value="女"></xsd:enumeration> <xsd:enumeration value="未知"></xsd:enumeration> </xsd:restriction> </xsd:simpleType> </xsd:schema>
class.xsd
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/classroom" xmlns:tns="http://www.example.org/classroom" elementFormDefault="qualified"> <!-- 引入student.xsd --> <xsd:include schemaLocation="student.xsd"></xsd:include> <!-- import该怎样使用才能引用到student.xsd中定义的stuType呢??? <xsd:import namespace="http://www.example.org/student" schemaLocation="student.xsd" /> --> <xsd:element name="classroom" type="tns:classroomType"/> <xsd:complexType name="classroomType"> <xsd:sequence> <xsd:element name="grade" type="tns:gradeType"/> <xsd:element name="name" type="xsd:string"/> <!-- 第一种方式: 将一组学生包装包stus中,这样通过xjc转换的java文件classroom。java中存在内部类 --> <xsd:element name="stus"> <xsd:complexType> <xsd:sequence minOccurs="1" maxOccurs="unbounded"> <!-- 使用student.xsd中定义好的stuType,由于student中的命名空间与class.xsd一致,所以这里才能通过tns前缀访问到stuType --> <xsd:element name="stu" type="tns:stuType"/> </xsd:sequence> </xsd:complexType> </xsd:element> <!-- 第二种方式:直接将学生单独一个一个列出来 <xsd:sequence minOccurs="1" maxOccurs="unbounded"> <xsd:element name="stu" type="tns:stuType"/> </xsd:sequence> --> </xsd:sequence> </xsd:complexType> <xsd:simpleType name="gradeType"> <xsd:restriction base="xsd:int"> <xsd:minInclusive value="2013"/> <xsd:maxInclusive value="2017"/> </xsd:restriction> </xsd:simpleType> </xsd:schema>
使用classroom.xsd结合student.xsd完成classroom.xml的编写
<?xml version="1.0" encoding="UTF-8"?> <classroom xmlns="http://www.example.org/classroom" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/classroom classroom.xsd"> <grade>2013</grade> <name>room one</name> <stus> <stu> <name>zs</name> <sex>男</sex> </stu> <stu> <name>ls</name> <sex>未知</sex> </stu> </stus> </classroom>
使用xjc(xml java change)将schema转换为java文件
cmd命令行:
将src目录下的classroom.xsd转为java放入xjc_01目录中
C:\Users\lenovo>xjc -d E:\technology-hqh\proj\webservice\JAX-WS\xjc_01 E:\technology-hqh\proj\webservice\JAX-WS\schema\src\classroom.xsd
parsing a schema...
compiling a schema...
org\example\classroom\ClassroomType.java
org\example\classroom\ObjectFactory.java
org\example\classroom\SexType.java
org\example\classroom\StuType.java
org\example\classroom\package-info.java
发表评论
-
实际应用-使用xsd定义Model对象
2014-02-27 02:24 1317使用schema定义Model 好 ... -
XJC 将schema转换为java类
2013-08-28 09:55 1855使用xjc(xml java change)将schema转 ... -
Webservice中获取Servlet的相关对象
2013-08-15 17:44 2884第一种方式: 通过注入WebServiceContex ... -
JAX与spring的无缝集成---增加Handler和Exception(二)
2013-08-15 16:00 1998客户端也使用spring集成JAX-WS。但是有一个问题需 ... -
Exception处理:服务端返回对象与客户端类型不一致XXX cannot be cast to XXX
2013-08-15 13:52 2613描述: 服务端向客户端返回数据时,发生类型转 ... -
JAX与spring的无缝集成(一)
2013-08-13 13:45 6625JAX-WS与spring集成有几 ... -
使用契约优先---重要注意事项
2013-08-11 22:23 1015使用契约优先编写schema和wsdl文件时,一般都是在ws ... -
通过HEADER传递信息-做权限控制
2013-08-08 18:11 2023通过HEADER而不是BODY传递“LICENSE” ... -
webservice传递二进制数据(文件)
2013-08-08 16:14 2300将二进制数据放到Attachment中进行传递,而不是放到 ... -
发布webservice到tomcat
2013-08-07 09:39 3052目标: 基于契约优先的webservice功能开发 ... -
基于契约优先的隐式头信息处理
2013-08-03 20:05 1230<?xml version="1.0&qu ... -
基于契约优先来编写webservice
2013-08-03 18:40 1222开发流程: 1.先写schema ... -
通过Handler添加HEADER
2013-08-03 14:05 2045LogicHandler 只能获取SOAPBody的信息 ... -
SOAP异常处理
2013-08-03 14:00 1009接口 package com.hqh.soap; imp ... -
深入SOAP发送消息的过程(SAAJ)
2013-07-28 18:54 2105SOAP结构体 SOAPMessage SOAPPa ... -
使用Transformer更新XML
2013-07-27 14:46 2783package com.hqh.stax; impo ... -
使用XMLStreamWriter写XML
2013-07-27 14:10 4028package com.hqh.stax; im ... -
使用java提供的XPATH处理xml
2013-07-27 13:10 982books.xml <?xml version=&q ... -
使用Stax处理XML
2013-07-27 10:57 1284java提供的XML处理 Stax处 ... -
使用JAXB完成XML与java对象的转换
2013-07-27 10:05 2155SAX 处理超大xml时使用 do ...
相关推荐
标题"CityGML_XML_Schema_definition"表明我们将要探讨的是CityGML的XML Schema定义,这是一个重要的文档,用于规定如何按照CityGML规范构建XML文件。XML Schema定义了XML元素的结构、数据类型以及它们之间的关系,...
"XML_Schema_of_Geodatabase.pdf"是由ESRI发布的技术论文,详细介绍了地理数据库(Geodatabase)的XML Schema结构,旨在为开发人员和数据管理人员提供标准化的数据交换格式,确保地理信息系统(GIS)数据的一致性...
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com note.xsd"> <to>Tove <from>Jani <heading>Reminder <body>Don't forget me this weekend! ``` XSD...
### XML Schema 教程知识点详解 #### 一、XML Schema 简介 XML Schema是一种用于描述XML文档结构的语言,被视为DTD(Document Type Definition)的替代品,具有更丰富的特性和更高的灵活性。XML Schema(也常称为...
XML Schema(XSD)则是为XML文档定义语法规则和数据类型的规范,确保XML文档的结构正确且一致。本教程将通过C#编程语言介绍如何解析XML数据并展示XML Schema。 在C#中,我们主要使用.NET Framework提供的System.Xml...
在处理XML文档时,为了确保数据的一致性和准确性,我们通常会使用DTD(Document Type Definition)或XML Schema来定义文档的结构。这两个工具都是XML的约束机制,用于规定XML文档的元素、属性以及它们之间的关系。 ...
其次,压缩包中的orm_2_0.xsd和persistence_2_0.xsd是XML Schema Definition(XSD)文件,它们定义了JPA的元数据规范。ORM(Object-Relational Mapping)文件定义了实体类到数据库表的映射规则,包括字段的映射、...
西北工业大学软件与微电子学院教学课件,wsdl,soap,xml,uddi等,深入浅出, 基础知识非常全,总共9个Ppt,欢迎下载
mysql common_schema 完整sql。适合5.1版本以上,支持5.7以下的简单的json内容获取
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> </xs:schema> ``` 在这个XML Schema中,`year`元素被定义为全局日期时间类型`gYear`,确保输入的数据格式正确。 在实际应用中,`...
在Java中处理XML,XML Schema(通常表示为XSD)扮演着重要的角色,它定义了XML文档的结构和数据类型,确保了数据的准确性和一致性。本教程将深入探讨如何在Java中利用XML Schema解析XML文件,涵盖XML的读取、分析、...
### XML_XSL_DTD_SCHEMA_SAX_DOM_JDOM_WEBSERVICE简介 #### 背景知识点拨 XML(可扩展标记语言,Extensible Markup Language)及其相关技术(如XSL、DTD、Schema、SAX、DOM、JDOM以及Web服务)在现代信息技术中...
标题中的"AUTOSAR_MMOD_XMLSchema.zip"指的是一个与AUTOSAR(AUTomotive Open System ARchitecture)相关的压缩包文件,它包含了MMOD(Model-based Modeling and Development)的XML Schema定义。AUTOSAR是一种全球...
在"schema.xml"中,我们找到了XML Schema的定义。XML Schema是W3C制定的一种规范,用于定义XML文档的结构和数据类型。它可以帮助验证XML文档是否符合预设的规则,确保数据的准确性和一致性。在个人简历的场景下,...
- ESI_Schema_V1i12.zip 包含了 EtherCAT Slave Information 的不同方面,如基本信息、基础架构、模块定义、字典和诊断信息的 XML 架构定义。 - 这些 XML 架构文件为开发 EtherCAT 应用程序、解析 EtherCAT 数据或...