XML Schema 是基于 XML 的 DTD 替代者。

XML Schema 可描述 XML 文档的结构。

XML Schema 语言也可作为 XSD(XML Schema Definition)来引用。

  1. 基本结构

    SomeWebService.Data.xsd:

     <?xml version="1.0" encoding="utf-8"?>
    <xs:schema id="SomeWebService_Data"
    targetNamespace="http://soa.aaa.com/user/SomeWebService/data/v1"
    xmlns="http://soa.aaa.com/user/SomeWebService/data/v1"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    xmlns:common="http://soa.aaa.com/common/types/v1">
    <xs:import namespace="http://soa.aaa.com/common/types/v1" schemaLocation="SOACommonTypes_V1.0.0.xsd"/> </xs:schema>

    schema是根节点

    targetNamespace是schema定义的元素的命名空间

    xmlns是默认命名空间

    简易元素:只包含文本的元素,包括:boolean,string,int等

    常用的类型:

    xs:string

    xs:decimal

    xs:integer

    xs:boolean

    xs:date

    xs:time

  2. import使用

    注意这里的SomeWebService.xsd引入了SomeWebService.Data.xsd,但是它们的命名空间是不能相同的。

    SomeWebService.xsd:

     <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema id="SomeWebService"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://soa.aaa.com/user/SomeWebService/v1"
    xmlns="http://soa.aaa.com/user/SomeWebService/v1"
    xmlns:common="http://soa.aaa.com/common/types/v1"
    xmlns:data="http://soa.aaa.com/user/SomeWebService/data/v1"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified">
    <xs:import namespace="http://soa.aaa.com/common/types/v1" schemaLocation="SOACommonTypes_V1.0.0.xsd"/>
    <xs:import namespace="http://soa.aaa.com/user/SomeWebService/data/v1" schemaLocation="SomeWebService.Data.xsd"/> <xs:complexType name="SomeRequest">
    <xs:sequence>
    <xs:element name="Uid" type="xs:string" />
    <xs:element name="Password" type="xs:string" />
    <xs:element name="From" type="xs:string" />
    <xs:element name="SubmitTime" type="xs:dateTime" />
    </xs:sequence>
    </xs:complexType> <xs:complexType name="User">
    <xs:sequence>
    <xs:element name="Age" type="xs:int" />
    <xs:element name="Name" type="xs:string" />
    </xs:sequence>
    </xs:complexType> </xs:schema>
  3. 定义一个基于C#的枚举

     <xs:simpleType name="Mode">
    <xs:restriction base="xs:string">
    <xs:enumeration value="Xml">
    <xs:annotation>
    <xs:appinfo>
    <EnumerationValue xmlns="http://schemas.microsoft.com/2003/10/Serialization/">0</EnumerationValue>
    </xs:appinfo>
    </xs:annotation>
    </xs:enumeration>
    <xs:enumeration value="Json">
    <xs:annotation>
    <xs:appinfo>
    <EnumerationValue xmlns="http://schemas.microsoft.com/2003/10/Serialization/">1</EnumerationValue>
    </xs:appinfo>
    </xs:annotation>
    </xs:enumeration>
    </xs:restriction>
    </xs:simpleType>
  4. 添加documentation

     <xs:complexType name="User">
    <xs:sequence>
    <xs:annotation>
    <xs:documentation>
    用户
    </xs:documentation>
    </xs:annotation>
    <xs:element name="Name" type="xs:string">
    <xs:annotation>
    <xs:documentation>
    姓名
    </xs:documentation>
    </xs:annotation>
    </xs:element>
    </xs:sequence>
    </xs:complexType>
  5. 属性

     <xs:attribute name="lang" type="xs:string"/>
    <xs:attribute name="lang" type="xs:string" default="EN"/>默认值
    <xs:attribute name="lang" type="xs:string" fixed="EN"/>固定值
    在缺省的情况下,属性是可选的。如需规定属性为必选,请使用 "use" 属性:
    <xs:attribute name="lang" type="xs:string" use="required"/>
  6. 限定

     <xs:element name="age">
    <xs:simpleType>
    <xs:restriction base="xs:integer">
    <xs:minInclusive value="0"/>
    <xs:maxInclusive value="120"/>
    </xs:restriction>
    </xs:simpleType>
    </xs:element>

w3school限定

  1. To Be Continued ...

参考:

http://www.w3school.com.cn/schema/index.asp

XSD笔记的更多相关文章

  1. XML学习笔记7——XSD实例

    在前面的XSD笔记中,基本上是以数据类型为主线来写的,而在我的实际开发过程中,是先设计好了XML的结构(元素.属性),并写好了一份示例,然后再反过来写XSD文件(在工具生成的基础上修改),也就是说,是 ...

  2. XSD实例

    XSD实例 在前面的XSD笔记中,基本上是以数据类型为主线来写的,而在我的实际开发过程中,是先设计好了XML的结构(元素.属性),并写好了一份示例,然后再反过来写XSD文件(在工具生成的基础上修改), ...

  3. XML学习笔记5——XSD复杂数据类型

    和简单数据类型对应就是复杂数据类型了,XML元素的数据类型可以是简单数据类型,也可以是复杂数据类型,而XML属性的数据类型就只能是简单数据类型.这篇笔记,就来学习一下XSD中的复杂数据类型了. 1.定 ...

  4. XML学习笔记4——XSD简单数据类型

    XSD提供了数据类型,并且支持自定义数据类型,但这一切都是建立在XSD内置数据类型和一套扩展内置数据类型的规则基础之上的,在这一篇笔记中,就来看看XSD中的数据类型. 1.XSD数据类型图 先看一下数 ...

  5. XML学习笔记3——XSD简述

    现在的语言,如果不有那么一点OO的影子,都不好意思称之为语言了.在XML的语义约束方面,DTD虽然简单,但是功能不够强大,完全是直白的描述,于是又有了替代DTD的XSD(XML Schema Defi ...

  6. XSD(XML Schema Definition)学习笔记

    今天学习了XSD相关的知识,为了以后查找的方便,写一些笔记. 一.什么是XSD? 1.XSD全称:XML Schema Definition.XML Schema 的作用是定义 XML 文档的合法构建 ...

  7. springMVC学习笔记--知识点总结1

    以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...

  8. ActiveMQ笔记(7):如何清理无效的延时消息?

    ActiveMQ的延时消息是一个让人又爱又恨的功能,具体使用可参考上篇ActiveMQ笔记(6):消息延时投递,在很多需要消息延时投递的业务场景十分有用,但是也有一个缺陷,在一些大访问量的场景,如果瞬 ...

  9. [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

随机推荐

  1. 使用mysqldump进行mysql数据库备份还原

    mysqldump是mysql自带的备份还原工具,默认在安装目录的bin下 可通过cmd命令行启动,然后运行: 还原一个数据库: mysql -h 主机 -u 用户名 -p密码 数据库名 < 指 ...

  2. Apache POI 实现对 Excel 文件读写

    1. Apache POI 简介 Apache POI是Apache软件基金会的开放源码函式库. 提供API给Java应用程序对Microsoft Office格式档案读和写的功能. 老外起名字总是很 ...

  3. 重建中国.NET生态系统

    Neuzilla官方微信公众号:搜 架构师联盟 或 neuzilla 我是.NET铁杆粉丝,所以如果你要在评论里跟我撕逼.NET怎么怎么烂,Java.C++.PHP.JavaScript怎么怎么好,我 ...

  4. 学习SQLite之路(五) C/C++ SQLite开发实例

    介绍一种乌班图中使用sqlite的用法,非常简单,下面的例子是在乌班图12.04中实现的: 1,先安装两个东西: sudo apt-get install sqlite sqlite3 sudo ap ...

  5. 从B 树、B+ 树、B* 树谈到R 树

    从B 树.B+ 树.B* 树谈到R 树 作者:July.weedge.Frankie.编程艺术室出品. 说明:本文从B树开始谈起,然后论述B+树.B*树,最后谈到R 树.其中B树.B+树及B*树部分由 ...

  6. 前端框架——BootStrap学习

    BootStrap简单总结下:1.栅格系统,能够很好的同时适应手机端和PC端(及传说中的响应式布局) 2.兼容性好 接下来是对BootStrap学习的一些基础案例总结和回顾: 首先引入:bootstr ...

  7. FlashFXP|FTP

    经典的FTP传输工具FlashFxp,留作几年吧!看和曾经用的软件代表着岁月的流逝和时间的推进性! 洒脱度过生活中的每一天.每一分钟,Mvpbang追随一生! 压缩包中有秘钥文件-flashfxp.k ...

  8. Oracle在中文环境下出现乱码解决办法

       zysong.ttf下载是一款oracle字体乱码解决工具,实质于缺乏中文字体包! 01情况的例子 02情况的例子 01.在开始安装的时候出现乱码 下载zysong.ttf,unzip 解压 一 ...

  9. 【Python】[函数式编程]高阶函数,返回函数,装饰器,偏函数

    函数式编程高阶函数 就是把函数作为参数的函数,这种抽象的编程方式就是函数式编程.--- - -跳过,不是很理解,汗 - ---

  10. nginx中获取真实ip

    nginx反向代理配置时,一般会添加下面的配置: proxy_set_header Host $host;      proxy_set_header X-Real-IP $remote_addr;  ...