工具软件XMLSpy 2010 破解版,是非常好的写XMl的工具软件.

1,Schema的好处:

  Schema出现的目的是通过一个更加合理的方式来编写xml的限制文件(基于xml语法的方式);

  Schema可以使用命名空间来支持多个名称相同的元素;

  Schema可以很好的完成对Java或者所有对象的修饰并且提供了大量的数据类型。

2,Schema文件   .xsd

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns=http://www.w3.org/2001/XMLSchema  <!--Schema的默认命名空间,不能修改,但可以增加前缀,如果增加前缀之后,就意味着所有element等元素都需要增加前缀-->
     targetNamespace=http://www.example.org/01  <!--自己这个文档的命名空间,可以方便其他Schema,xml文件引用 -->
     xmlns:tns=http://www.example.org/01        <!-- 此处的名称和自己的名称空间一致,但增加了tns前缀,此时如果 引用当前文件创建的类型,需要加上tns前缀-->
      elementFormDefault="qualified">

      <!-- user 是一个复杂类型,依次有三个元素 id,userName,birthday -->
      <element name="user">
          <complexType>
              <sequence>
                  <element name="id" type="int"></element>
                  <element name="userName" type="string"></element>
                  <element name="birthday" type="date"></element>
              </sequence>
          </complexType>
      </element>
</schema>

3, 在xml中引入Schema文件

<?xml version="1.0" encoding="UTF-8"?>

<user xmlns="http://www.example.org/01"
        xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance  <!-- 创建了一个可以引入其他Schema文件的名称空间 -->
        xsi:schemaLocation="http://www.example.org/01" >     <!-- 引入其他名称空间 -->

    <!-- 如果采用文件的方式引入其他命名空间,可以这样: xsi:noNamespaceSchemaLocation="01.xsd" -->
        <id>1</id>
        <userName>yangw</userName>
        <birthday>1992-09-24</birthday>

</user>

特别注意: 如果要在eclipse中使用命名空间的引入,需要为xml增加xml的category

4, schema元素和属性定义

<?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">
         <!-- books 是 复杂类型 -->
         <element name="books">
             <complexType>
                 <!-- sequence 元素必须按照顺序出现-->
                 <!-- maxOccurs最大出现次数,这里用了不限制 -->
                 <sequence  maxOccurs="unbounded">
                     <element name="book">
                         <complexType>
                             <sequence minOccurs="1" maxOccurs="unbounded">
                                 <element  name="title" type="string" />
                                 <element  name="content" type="string" />
                                 <!--  choice多个选一个 -->
                                 <!--  all 没有顺序,每个元素只能出现一次 -->
                                 <choice>
                                     <element name="author" type="string"/>
                                     <element name="authors">
                                         <complexType>
                                             <sequence maxOccurs="3">
                                                 <element name="author" type="string" />
                                             </sequence>
                                         </complexType>
                                     </element>
                                 </choice>
                             </sequence>

                             <!--  属性的定义,必须在sequence后面写 -->
                             <attribute name="id" type="int" use="required" />
                         </complexType>
                     </element>
                 </sequence>
             </complexType>
         </element>
</schema>
xml例子

<?xml version="1.0" encoding="UTF-8"?>
<books xmlns="http://www.example.org/01"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.example.org/01 01.xsd ">
  <book>
    <title>Java in action</title>
    <content>my java book</content>
    <author>author1</author>
  </book>

  <book>
      <title>English book</title>
      <content>my English book first</content>
      <authors>
          <author>awei</author>
          <author>yangw</author>
      </authors>
  </book>
</books>

5, 定义schema文件的几种方式以及优缺点

  1>Russian Doll(俄罗斯玩偶): 只有一个根元素,通过嵌套的方式完成编写

    优点:结构清晰,根元素只有一个

    缺点:元素无法重用.

    例子:  上面的 “ 4, schema元素和属性定义”

  2>Salami Slice(香肠切片,腊肠切片):

    优点:能够进行最大化的重用

    缺点:根元素不清晰

    例子: 如下,

<?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="book" type="tns:bookType" />
         <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>

</schema>

  3> Venetian Blind(百叶窗)  通过simpleType完成重用

    优点:一个根节点,结构清晰

    缺点:

    例子: 如下,

<?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">

         <!-- 根元素person -->
         <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 出现的目的就是 约束 -->
         <simpleType name="ageType">
             <restriction base="int">
                 <!-- age 在 [1,150) -->
                 <minInclusive value="1"/>
                 <maxExclusive value="150" />
             </restriction>
         </simpleType>
         <simpleType name="sexType">
             <restriction base="string">
                 <!-- 性别是 枚举类型 -->
                 <enumeration value="男" />
                 <enumeration value="女" />
             </restriction>
         </simpleType>
         <simpleType name="emailType">
             <restriction base="string">
                 <!-- 基于正则表达式的方式 -->
                 <pattern value="\w[\w\d\.]*@[\w\d\.]+\.[a-zA-Z]{2,6}"></pattern>
             </restriction>
         </simpleType>
</schema>
<?xml version="1.0" encoding="UTF-8"?>
<person xmlns="http://www.example.org/02"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.example.org/02 02.xsd "
           sex="男">
      <name>yangw</name>
      <age>15</age>
      <email>yangw@eastcom.com</email>
</person>

  此外,在一个schema文件中使用另外一个schema文件中的内容

    <include schemaLocation="xxx.xsd"></include> <!-- 在同一个名称空间下可以直接写文件名-->

webservice03#schema#元素属性定义的更多相关文章

  1. cursor CSS属性定义鼠标指针悬浮在元素上时的外观。

    1 1 cursor CSS属性定义鼠标指针悬浮在元素上时的外观. https://developer.mozilla.org/zh-CN/docs/Web/CSS/cursor 概述 cursor  ...

  2. XSD - <schema> 元素

    <schema> 元素 <schema> 元素是每一个 XML Schema 的根元素: <?xml version="1.0"?> <x ...

  3. 了解HTML表单之input元素的30个元素属性

    目录 传统属性 name type accept alt checked disabled readonly maxlength size src value 新增属性 autocomplete au ...

  4. css样式表和选择器的优先级以及position元素属性值的区别

    css样式表优先级 问题:当同一个HTML元素被不止一个样式定义时,会使用哪个样式呢? 答:一般而言,所有的样式会根据下面的规则层叠于一个新的虚拟样式表中,其中数字4拥有最高的优先权. 1.浏览器缺省 ...

  5. JS操作DOM元素属性和方法

    Dom元素基本操作方法API,先记录下,方便以后使用. W3C DOM和JavaScript很容易混淆不清.DOM是面向HTML和XML文档的API,为文档提供了结构化表示,并定义了如何通过脚本来访 ...

  6. [ofbiz]screen中应用form和ftl,控制页面元素属性

    可以在screen中定义form与ftl两个文件,ftl中可以使用js控制form中的页面元素属性. 控制元素是否可编辑:        $("#oaDataReport_budget&qu ...

  7. CSS属性定义 文本修饰 边框效果 背景修饰

    一.CSS属性定义1.css颜色表示方法[重点]rgb(红绿蓝3个颜色通道 强度值为0-255)rgb(0,0,0)rgba(alpha a是透明度 值为0-1)rgba(123,123,123,0) ...

  8. font-size-adjust属性定义及用法

    font-size-adjust属性定义及用法 在css中,font-size-adjust属性是使用来更好的控制字体大小,当第一个选择的字体不可用时,浏览器使用第二个指定的字体,这可能会导致改变字体 ...

  9. HTML表单__表单元素属性

    看完"HTML表单__表单元素"那一节的同学会发现,同是input标签,type属性值不一样的时候,input类型完全不一样.type就是input的一个属性,除type之外,还有 ...

随机推荐

  1. MyEclipse 护眼配色

    因为长时间对着电脑,白底看着老累眼,所以想把myeclipse全部改成VS的黑主题,但最终无功而返.(读者有修改方案可以推荐给我哈,在此先谢谢了) 除了黑底的颜色主题,其实豆沙绿也是挺柔和的,下面是豆 ...

  2. 【Ubuntu 16】 SSH免密码登录

    免密码登录时两个机器的普通用户名都要相同,这里都是dream361 ,主机名可以不同,这里的主机名都是ubuntu 1.目前有两台机器master 和 slave 在这两台机器上都安装并启动ssh服务 ...

  3. @media实现网页自适应中的几个关键分辨率

    不同分辨率设备或不同窗口大小下网页布局经常是不同的,一不小心就会发生错位.可以利用@media screen实现网页布局的自适应,但是怎样兼容所有主流设备就成了问题.到底分辨率是多少的时候设置呢?首先 ...

  4. 前端UI框架《Angulr》入门

    Angulr 项目的名称为 Angulr,对!没错!就是少个 a,少个 a 就是它正确的拼写. 是一个以 Bootstrap 和 AngularJS 为基础,并使用了大量前端开源组件合成的一个前端UI ...

  5. JDBC获取数据库Connection的工具抽取

    使用JDBC获取数据库的连接,大字分为三个步骤 1.获取驱动包名,定义URL,database_username,database_password 2.获取Connection对象 3.利用Conn ...

  6. 斐波那契数列—Java

    斐波那契数列想必大家都知道吧,如果不知道的话,我就再啰嗦一遍, 斐波那契数列为:1 2 3 5 8 13 ...,也就是除了第一项和第二项为1以外,对于第N项,有f(N)=f(N-1)+f(N-2). ...

  7. mvc中html导出成word下载-简单粗暴方式

    由于工作需求,需要把html简历页导出成word下载.网上搜索了很多解决方案,基本都是用一些插件,然后写法也很麻烦,需要创建模板什么的. 固定替换值  代码一大堆.但是对于我的需求来说  并没有什么用 ...

  8. LVS之DR跨网段实战及高可用性

    author:JevonWei 版权声明:原创作品 LVS-DR实现跨网段 网络拓扑 网络环境 RS1 RIP 192.168.198.138/24 VIP 192.168.80.100/32 GW ...

  9. jQuery学习目录

    前面的话 目前来说,jQuery可能已经不再处于人们的话题中心.人们讨论的更多的是Vue.Angular和React.但是,jQuery的使用量依然广泛,据统计,它仍然是目前使用率最高的javascr ...

  10. 扫雷游戏制作过程(C#描述):第五节、菜单操作(续)

    前言 这里给出教程原文地址. 该项目已经放在github上托管. 发布版已经分享到百度网盘 菜单操作(续) 接着节前一章节的内容,我们继续完善菜单栏的功能. 我们首先,先完善Rank的选项,我们希望我 ...