欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

学习xsd 博客分类: 其他 XML 

程序员文章站 2024-03-04 18:12:30
...
最近项目一直负责项目中的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>


相关标签: XML