学习xsd

最近项目一直负责项目中的webservice的开发.使用的是xfire来完成.使用xstream根据xml生成javabean。但是发现生成javabean的属性类型都是String。后面经过讨论。决定使用xsd生存javabean这样生成的属性类型就能够可控.
在xsd学习中推荐下w3c的xsd 教程,文档也很详情http://www.w3school.com.cn/schema/schema_intro.asp.
由于水平有限所以 首先使用工具根据xml生存xsd然后再自己在进行对应的需改.
首先介绍下xsd的头部:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3school.com.cn"
xmlns="http://www.w3school.com.cn"
elementFormDefault="qualified">


...
...

</xs:schema>
-------------------
所有的xsd都是以<xs:schema>开头 里面的属性解释http://www.360doc.com/content/10/1104/10/2224885_66474422.shtml
进入正文:
首先写一个xml文件
<OTRequest Version=""><TransactionName>必填项:指令名称,固定值 OTA_TourTeamInfoRQ ★</TransactionName>
<Header>
<SessionID>预留字段,不填</SessionID>
<Invoker>调用者 不填</Invoker>
<Encoding>字符编码</Encoding>
<Locale>区域 不填</Locale>
<SerialNo>预留字段,不填</SerialNo>
<TimeStamp>时间戳 YYYYmmDD HH:MM:SS</TimeStamp>
<Application>子系统名称 String类型 填写"travelpkg" ★</Application>
</Header>
<DestinationSystemCodes>
<UniqueID>String 不填</UniqueID>
</DestinationSystemCodes>
<IdentityInfo>
<OfficeID>代理Office号 预留字段不填</OfficeID>
<UserID>接口用户名 ★</UserID>
<Password>接口用户密码 ★</Password>
<Role>角色 预留字段 不填</Role>
</IdentityInfo>
<Source>
<OfficeCode>代理Office号 String类型 预留字段,不填</OfficeCode>
<UniqueID>供应商Code String ★</UniqueID>
<BookingChannel>预定渠道代码(默认填写:HOTELBE) 预留字段,不填</BookingChannel>
</Source>
<TeamInfoRQ>
<ExternalUserInfo>
<ExternalUserID>外部登录人员用户ID String ★</ExternalUserID>
<ExternalUserName>外部登录人员用户真实姓名 String ★</ExternalUserName>
</ExternalUserInfo>
<BeginDate> 团出发日期有效期开始 YYYYMMDD 如:20110625 </BeginDate>
<EndDate> 团出发日期有效期截止 YYYYMMDD 如:20110925 </EndDate>
</TeamInfoRQ>
</OTRequest>
--------------------------
首先是
<xs:element name="OTRequest"> <!--就是xml的开头 包含了其他的类型 是一个复杂的类型-->
<xs:complexType> <!--定义复杂类型。-->
<xs:sequence><!--要求子元素必须按顺序出现。每个子元素可出现 0 到任意次数。在其中可能牵涉到哪些属性必须存在.-->

<xs:element ref="TransactionName"/> <!--引用了name为TransactionName 的元素 -->
<xs:element ref="Header"/>
<xs:element ref="DestinationSystemCodes"/>
<xs:element ref="IdentityInfo"/>
<xs:element ref="Source"/>
<xs:element ref="TourBookRQ"/>
</xs:sequence>
<xs:attribute name="Version" type="xs:string" use="required"/>
</xs:complexType>


<xs:element name="TransactionName" type="xs:string" default="OTA_TourTeamInfoRQ" maxOccurs="1" minOccurs="1"/> <!--定义了name为TransactionName的元素 并设置了类型为string 默认值是:OTA_TourTeamInfoRQ 我们可以设置如long,int,double等类型..在上面的xml中有★表示该元素必须存在 那么在xsd中如果设置呢? 我想到了一中比较的笨的方法 设置元素的maxOccurs和minOccurs属性值为1.
maxOccurs:规定 element 元素在父元素中可出现的最大次数。该值可以是大于或等于零的整数。若不想对最大次数设置任何限制,请使用字符串 "unbounded"。 默认值为 1。
minOccurs:规定 element 元素在父元素中可出现的最小次数。该值可以是大于或等于零的整数。默认值为 1。如果父元素是 schema 元素,则不能使用该属性。
-->

</xs:element>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值