schema学习系列三: schema中的复杂元素
如何定义复合元素?
请看这个复合 XML 元素,"employee",仅包含其他元素:
<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
在 XML Schema 中,我们有两种方式来定义复合元素:
1. 通过命名此元素,可直接对"employee"元素进行声明,就像这样:
<xs:element name="employee"><xs:complexType><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/></xs:sequence></xs:complexType> </xs:element>
假如您使用上面所描述的方法,那么仅有 "employee" 可使用所规定的复合类型。请注意其子元素,"firstname" 以及 "lastname",被包围在指示器 <sequence>中。这意味着子元素必须以它们被声明的次序出现。您会在 XSD 指示器 这一节学习更多有关指示器的知识。
2. "employee" 元素可以使用 type 属性,这个属性的作用是引用要使用的复合类型的名称:
<xs:element name="employee" type="personinfo"/><xs:complexType name="personinfo"><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/></xs:sequence> </xs:complexType>
如果您使用了上面所描述的方法,那么若干元素均可以使用相同的复合类型,比如这样:
<xs:element name="employee" type="personinfo"/> <xs:element name="student" type="personinfo"/> <xs:element name="member" type="personinfo"/><xs:complexType name="personinfo"><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/></xs:sequence> </xs:complexType>
您也可以在已有的复合元素之上以某个复合元素为基础,然后添加一些元素,就像这样:
<xs:element name="employee" type="fullpersoninfo"/><xs:complexType name="personinfo"><xs:sequence><xs:element name="firstname" type="xs:string"/><xs:element name="lastname" type="xs:string"/></xs:sequence> </xs:complexType><xs:complexType name="fullpersoninfo"><xs:complexContent><xs:extension base="personinfo"><xs:sequence><xs:element name="address" type="xs:string"/><xs:element name="city" type="xs:string"/><xs:element name="country" type="xs:string"/></xs:sequence></xs:extension></xs:complexContent> </xs:complexType>
schema学习系列三: schema中的复杂元素相关推荐
- 数据库MYSQL学习系列三
数据库MYSQL学习系列三 三.MYSQL事务与存储引擎 3.1-数据库事务 什么是事务 一系列有序的数据库操作: o要么全部成功 o要么全部回退到操作前的状态 o中间状态对其他连接不可见 事务的 ...
- Pyside2 学习系列三:PyInstaller打包项目瘦身(超详细的Pyside2 攻略)
继上一篇文章打包后,发现包太大了,我们现在开始进行瘦身优化. 本项目的所有演示代码:github可在这里下载. 打包只用的工具为PyInstaller. 不想细看的朋友 可以直接跳到 最后 方法对比 ...
- idea学习系列三之版本管理工具
idea学习系列三之版本管理工具 上一篇文章主要介绍了将idea中常用的快捷键,快捷键要想熟练那就得在实际的工作中多使用,刚开始可能很麻烦经常去笔记中找,不过用多了自然就熟练了. 这篇文件将会介绍一下 ...
- Vue+Electron学习系列 (三) -- 自动更新
Vue+Electron学习系列 1️⃣Vue+Electron学习系列 (一) -- 初识 2️⃣ Vue+Electron学习系列 (二) -- 打包发布 3️⃣ Vu ...
- JavaScript学习(三十五)—拖动元素
JavaScript学习(三十五)-拖动元素 代码如下: <!DOCTYPE html> <html lang="en"><head><m ...
- 动态规划系列---求数组中两个元素差的最大值
题目 求数组中两个元素差的最大值(后面的元素减去前面的元素):对应实际生活中的股票买卖,找出一只股票走势里面可能的最大收益: 思路 类似于求数组连续和的最大值: 保存最大差值和最小值,遍历数组,如果 ...
- NMock学习系列(三)--- NMock在DDD领域驱动的单元测试中的应用
介绍 领域驱动设计涵盖的知识点比较多,其中代码的架构.设计.编写基本上只占到其中的很小一部分,其它的大部分讲解的是需求的获取方式.项目的管理方式等知识.本篇就是针对这一小部分的知识点位来展开的.所以本 ...
- webservice 教程学习系列(一)——schema约束
最近同事在做一个webservice 接口的调用,我比较感兴趣,所以就找时间学习了一下.在此写下我学习的全过程,算是记个笔记吧!如有不足或者错误之处,欢迎指摘. 因为大部分的webservice是通过 ...
- Java NIO学习系列三:Selector
前面的两篇文章中总结了Java NIO中的两大基础组件Buffer和Channel的相关知识点,在NIO中都是通过Channel和Buffer的协作来读写数据的,在这个基础上通过selector来协调 ...
最新文章
- 如何将Mac OS X10.9下的Python2.7升级到最新的Python3.3
- 算法设计与分析 0 算法与性能:GCD与冒泡排序
- python 多维 条件获取
- RDA8955的新版本SDK串口接收数据的问题记录
- 有个小问题,大家一起研究。
- BugkuCTF-WEB题文件包含
- Python的pyproject.toml文件中的tool.poetry.dev-dependencies选项
- FPGA芯片手册阅读技巧
- 『MXNet』第四弹_Gluon自定义层
- 蓝桥杯省赛2017年Java组B组
- 使用github客户端上传本地项目到github
- C++视频教程资源链接合集
- W5500+STM32F103C8T6进行TCP通信(modbus)
- python-微信公众个性二维码生成-生成自己名片二维码-链接二维码【超酷】
- 同时使用SVN和Git进行版本控制
- 王之泰201771010131《面向对象程序设计(java)》第十周学习总结
- 数据分析的重要性分析
- android kitkat(4.4以上)各个版本的特性解析
- 白噪声校验matlab,白噪声的测试MATLAB程序.doc
- python过滤敏感词记录
热门文章
- 【开发随记】国密SM2的简单运用和踩坑
- JAVA中的三大集合框架
- 想要一览众山小,就得有爬上山顶的决心和爬山的坚持,两者缺一不可! ----2020年度总结
- 一文搞懂Java8新特性
- 【Python】快速排序求第N大的数字
- 商城项目登录功能实现(动图)
- 遇到问题----/var/log/messages被写满占空间
- matlab实现图像清晰化,基于MatLab的数字图像清晰化方法.pdf
- 计算机无法打开压缩包,电脑压缩文件为什么打不开?手把手教你解决压缩文件打不开的问题...
- linux服务器是什么