XSD简介

一、前言

XSD是一门用以规定xml文件中某个元素(一般是搭配)的模型,用以规定一个xml文件中某个元素应该出现哪些字段,哪些字段需要出现几次等。XSD也是一门语言,下面从其数据结构和语法(指令)介绍。数据结构:基本数据结构、复合数据结构。指令:类型定义、元素定义分别介绍。最后介绍如何使用,需要搭配命名空间来使用,规定某个命名空间下的元素结构。

二、数据结构

xsd的数据类型包括简易元素和复杂元素。

2.1 简单类型

简单类型都是内置的基本数据类型,例如为字符串、数字、逻辑等

2.1.1 简单元素

简单元素即不含子元素,不含属性的元素,任何含有属性或子元素的类型都是复杂类型。其在xsd中的语法:

  • 语法

    <xs:element  name="xxx" type="yyy" [(default="hello") | (fixed="world")]>
    </xs:element>
    

    表示定义一个简易元素或者属性xxx,其类型为yyy。default和fixed只能二选一或者都不出现,default标识缺乏元素时,默认值为hello。fixed表示只可以为固定值(一般不用,可以固定了干脆写入代码)

  • 示例
     <xs:element name="date" type="xs:string">
    

    该段标签标示定义一个简易元素,元素标签必须为date, 元素类型是string。简易元素即该元素内部只包含纯文本类数据,而不包含子元素。另外简易元素的类型即基本数据类型,包括boolean、integer、decimal、string、date、time。即纯文本数据必须符合这些模式规定的文本,比如boolean,那么文本只能是true或者false,如果是integer那么文本必须是纯数字或者开头有正负号等等。

2.1.2 简单属性
  • 语法
    语法类似简单元素,只不过需要将element替换为attribute
2.1.3 内容限定

以上的定义中除了说明了类型的较为宽泛的类型规范,没有细致的固定元素或者属性的详细内容。可以利用restriction来限定。

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

语法解释:需要使用simpleType包围restriction标签,在restriction标签的属性中需要指明限定数据的基本类型, 而后restriction子元素中限定内容。具体的每种数据类型的限制不一致,具体参考w3s标准。

2.2 复杂类型

复杂数据类型一般是指复合数据类型,即其包含子元素,子元素可以是复杂数据类型,可以是简易数据类型。定义复杂元素的基础是定义复杂类型,类似于写代码中需要定义class。

2.2.1 定义复杂类型
  • 语法

    <!-- 定义有严格顺序的复杂类型 -->
    <xs:complexType name="SequencedType"> <!-- name表示的是类型名 --><xs:sequence><xs:element name="tag_name" type="any_type_name"/>...<xs:element name="tag_name_1" type="any_type_name"/></xs:sequence>
    </xs:complexType><!-- 定义任意顺序的复杂类型 -->
    <xs:complexType name="UnorderedType"><xs:all><xs:element name="tag_3" type="any_type_name" minOccur="1"/> <!-- minOccur 表示必须出现 -->...<xs:element name="tag_4" type="any_type_name" maxOccur="10"/><!-- maxOccur 表示出现次数小于10 --></xs:all>
    </xs:complexType><!-- 二选一字段 -->
    <xs:complexType name="ChoiceType"><xs:anotation>注释内容,一般都是解释类型</xs:anotation><xs:choice><xs:element name="tag_3" type="any_type_name"/><xs:element name="tag_4" type="any_type_name"/></xs:choice>
    </xs:complexType><!-- 定义实例 -->
    <xs:element name = "object"><xs:complexType><xs:all><xs:element name="seq" type="SequencedType"/><xs:element name="unorder" type="UnorderedType"/><xs:element name="choice" type="ChoiceType"/></xs:all></xs:complexType>
    </xs:element>
    

    定义复杂类型的语法中可以定义三种类型的复杂类型,一种是严格要求字段顺序的类型sequence,一种是不要求严格顺序的类型all,还有一种是要求字段二选一的choice,另外可以在属性中添加minOccur好maxOccur来限定字段出现的次数。这里定义的只是一种类型,类似于C++/JAVA中定义class一样,如果需要使用还需要定义实例。实例定义中是定义了一个复合元素,该元素中定义了一个匿名的复合类型(complexType没有name属性),在实例定义中的子元素定义展现了一种定义复合元素的另一种方式。在实际写xsd时,一般都是采取后者的方式。

    <xs:element name="tag_name" type="type_name">
    

    三、使用

    在写完xsd文件后,规范了一个xml的结构规范,但是如何使用这组规范。

    <?xml version="1.0" encoding="UTF-8"?>
    <root xmlns="http://your.uri.of.xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://your.uri.of.xmlns uri_of_your_xsd">
    </root>
    

    上例显示了如何使用xsd,在元素root中定义了一个默认命名空间"http://your.uri.of.xmlns",第二个命名空间xmlns:xsi是公认的命名空间。第三个是一个属性,属性的内容是key value,key是要使用xsd的命名空间,value是xsd的uri,key和value使用空格隔开。关于命名空间可以参靠xml的命名空间,默认命名空间就是标签默认属于的空间,一般没有名字,带有名字的命名空间是类似xmlns:namespace=“uri”,如果在一个标签的签名使用namespace:tag,则标识该标签属于命名空间namespace。

XSD(Xml Schema Definiton)简介相关推荐

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

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

  2. XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式

    XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD),作用是定义 XML 文档的合法构建模块,类似 DTD,但更加强大. 作用有: ①定义 ...

  3. java实现xml的xsd验证_Java通过XML Schema校验XML

    首页 > 编程语言> 文章详细 Java通过XML Schema校验XML 2020-03-28 10:51:10阅读:77来源:互联网 Java通过XML Schema校验XML XML ...

  4. oracle xdb插件报错,注册XML Schema到ORACLE XDB并对XML进行验证

    注册XML Schema到ORACLE XDB可以方便生成XML的验证. What is an XML Schema? An XML Schema is a language for expressi ...

  5. XML Schema全接触 (这里主要介绍W3C的Schema标准语法)

    来源:http://bbs.w3china.org/dispbbs.asp?BoardID=23&ID=27215&ReplyID=22178&skin=1 XML Schem ...

  6. XML、XML Schema及XSL的应用——信息组织实验报告

    一.实验目的: 1.掌握XML文档的基本语法. 2.通过本实验,使学生能够了解并掌握XML Schema的定义方法及其用途. 3.掌握使用XSL显示XML文档的基本方法. 4.熟悉XML spy201 ...

  7. XML Schema简介

    XML Schema简介 什么是XMLSchema? XMLSchema的作用是定义XML文档的合法构建模块,类似DTD. XMLSchema 是基于 XML 的DTD 替代者. XMLSchema ...

  8. 【转】XSD (xml Schema Definition)

    来自:http://www.cnblogs.com/newsouls/archive/2011/10/28/2227765.html Xml Schema的用途 1.  定义一个Xml文档中都有什么元 ...

  9. 理解 XML Schema:XML Schema 初步 (I)

    理解 XML Schema:XML Schema 初步 (I) 内容: 购买订单模式文档 复合类型定义,元素和属性声明 出现约束 全局元素和属性 命名冲突 简单类型 列表类型(List Type) 联 ...

最新文章

  1. Docker(二):Docker 容器使用
  2. Linux入门——一些linux基础
  3. 使用原生JS实现简单的ajax
  4. LV 旗下公司的识别算法: 4 秒鉴定假包,准确率达 99.1%
  5. React Native实现NbaApp
  6. [WPF]根据显示区域宽度裁剪字符串
  7. python找到文件夹下指定文件类型_python 读取指定文件夹中的指定文件类型的文件名...
  8. Python安装指南
  9. grid设置时间格式
  10. 如何在win 8的64位下破解安装EPLAN
  11. 全网最快的网络服务器是什么,最好用最快的首选 DNS 服务器地址设置 (电信/联通/移动)...
  12. 基于89C51单片机的智能语音拨号电话
  13. Raspberry Pi 4 with Debian GNU/Linux 11 (bullseye)
  14. 《校园封神榜》典型用户及其场景描述
  15. 上级对下级用通知合适吗_通知一般用于上级对下级
  16. 手机芯片基带芯片及服务器芯片有什么区别,手机射频电路知识干货,射频芯片和基带芯片又是什么关系?...
  17. WPS表格 下拉列表 两级下拉列表联动 多级下拉列表联动
  18. Android音频子系统(十三)------audio音频测试工具
  19. PC上最快的发包工具
  20. C#实现【串口助手】【入门级别】【小白进】

热门文章

  1. 二、kotlin的函数
  2. GitHub最详细使用方法及教程
  3. 全国大学生智能车竞赛经验分享—直立车
  4. DIY精简我们的迅雷
  5. 山东大学暑期实训-饮食健康管理系统设计与实现(一)
  6. 移动小王子--Intel Xscale处理器
  7. 原生JS实现点击查看更多
  8. LabVIEW学习笔记(三)——程序结构
  9. 预制发票付款到期日取值
  10. _beginthreadex 创建多线程解读