Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Xsd培训资料

2,091 views

Published on

Xsd培训资料

Published in: Education, Sports, Technology
  • Be the first to comment

  • Be the first to like this

Xsd培训资料

  1. 1. XSD<br />XML数据文件的格式校验<br />
  2. 2. 概述<br />XSD是干什么的呢?<br />XSD是个什么样子的呢?<br />XSD怎么使用呢?<br />
  3. 3. XSD的作用<br />Look!<br />
  4. 4. XSD的主要作用<br />Use!<br />我们可以用它来做什么?<br />格式校验<br />数据校验<br />我们什么时间用它呢?<br />存储前...<br />转换前...<br />
  5. 5. Schema的样子<br />&lt;?xml version=&quot;1.0&quot;?&gt; <br />&lt;xs:schema xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot; targetNamespace=&quot;http://www.xinaomdt.com/hie/1.0&quot; xmlns=&quot;http://www.xinaomdt.com/hie/1.0&quot; elementFormDefault=&quot;qualified&quot;&gt; <br /> &lt;xs:element name=&quot;note&quot;&gt;<br /> &lt;xs:complexType&gt;<br /> &lt;xs:sequence&gt; <br /> &lt;xs:element name=&quot;to&quot; type=&quot;xs:string&quot;/&gt; <br /> &lt;xs:element name=&quot;from&quot; type=&quot;xs:string&quot;/&gt; <br /> &lt;xs:element name=&quot;heading&quot; type=&quot;xs:string&quot;/&gt; <br /> &lt;xs:element name=&quot;body&quot; type=&quot;xs:string&quot;/&gt; <br /> &lt;/xs:sequence&gt; <br /> &lt;/xs:complexType&gt; <br /> &lt;/xs:element&gt; <br />&lt;/xs:schema&gt;<br />
  6. 6. XSD的引用<br />&lt;?xml version=&quot;1.0&quot;?&gt;<br />&lt;note xmlns=&quot;http://www.xinaomdt.com/hie/1.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://www.xinaomdt.com/hie/1.0 note.xsd&quot;&gt;<br /> &lt;to&gt;George&lt;/to&gt; <br /> &lt;from&gt;John&lt;/from&gt; <br /> &lt;heading&gt;Reminder&lt;/heading&gt; <br /> &lt;body&gt;Don&apos;t forget the meeting!&lt;/body&gt; <br />&lt;/note&gt;<br />
  7. 7. 数据类型<br />在XSD中都支持什么数据类型呢?<br />
  8. 8. 数据类型的支持<br />描述允许的文档内容 <br />验证数据的正确性 <br />定义数据约束(data facets) <br />定义数据模型(或称数据格式) <br />在不同的数据类型间转换数据 <br />
  9. 9. 内建数据类型<br />常用的内建数据类型<br />xs:string <br />xs:decimal <br />xs:integer <br />xs:boolean<br />xs:date <br />xs:time<br />Xs:dateTime<br />
  10. 10. 简单数据类型<br />
  11. 11. 复杂数据类型<br />示例<br />&lt;person&gt;<br />&lt;firstname&gt;John&lt;/firstname&gt;<br />&lt;lastname&gt;Smith&lt;/lastname&gt;<br />&lt;/person&gt;<br />对应的Schema<br />&lt;xs:element name=&quot;person&quot; type=&quot;persontype&quot;/&gt; <br />&lt;xs:complexType name=&quot;persontype&quot;&gt; <br /> &lt;xs:sequence&gt; <br /> &lt;xs:element name=&quot;firstname&quot; type=&quot;xs:string&quot;/&gt; <br /> &lt;xs:element name=&quot;lastname&quot; type=&quot;xs:string&quot;/&gt; <br /> &lt;/xs:sequence&gt; <br />&lt;/xs:complexType&gt;<br />
  12. 12. 元素<br />XSD是由什么组成的呢?<br />
  13. 13. 简单元素<br />简易元素指那些仅包含文本的元素;<br />它不会包含任何其他的元素或属性;<br />文本的类型可以是内建数据类型,也可以是自定义数据类型;<br />可以增加数据约束(facets);<br />
  14. 14. 定义简单元素<br />定义简单元素的语法<br />&lt;xs:element name=“elementName&quot; type=“BuiltInTypeOrCustomType&quot;/&gt;<br />简单元素示例<br />&lt;lastname&gt;Smith&lt;/lastname&gt; <br />&lt;age&gt;28&lt;/age&gt; <br />&lt;dateborn&gt;1980-03-27&lt;/dateborn&gt; <br />对应的简单元素定义:<br />&lt;xs:element name=&quot;lastname&quot; type=&quot;xs:string&quot;/&gt; <br />&lt;xs:element name=&quot;age&quot; type=&quot;xs:integer&quot;/&gt; <br />&lt;xs:element name=&quot;dateborn&quot; type=&quot;xs:date&quot;/&gt;<br />
  15. 15. 复杂元素<br />示例<br />&lt;person&gt;<br />&lt;firstname&gt;John&lt;/firstname&gt;<br />&lt;lastname&gt;Smith&lt;/lastname&gt;<br />&lt;/person&gt;<br />对应的Schema<br />&lt;xs:element name=&quot;person&quot;&gt;<br />&lt;xs:complexType&gt;<br />&lt;xs:sequence&gt;<br />&lt;xs:element name=&quot;firstname&quot; type=&quot;xs:string&quot;/&gt;<br />&lt;xs:element name=&quot;lastname&quot; type=&quot;xs:string&quot;/&gt;<br />&lt;/xs:sequence&gt;<br />&lt;/xs:complexType&gt;<br />&lt;/xs:element&gt;<br />
  16. 16. 类型的继承<br />&lt;xs:complexType name=&quot;personinfo&quot;&gt;<br /> &lt;xs:sequence&gt;<br /> &lt;xs:element name=&quot;firstname&quot; type=&quot;xs:string&quot;/&gt;<br /> &lt;xs:element name=&quot;lastname&quot; type=&quot;xs:string&quot;/&gt;<br /> &lt;/xs:sequence&gt;<br />&lt;/xs:complexType&gt;<br />&lt;xs:complexType name=&quot;fullpersoninfo&quot;&gt;<br /> &lt;xs:complexContent&gt;<br /> &lt;xs:extension base=&quot;personinfo&quot;&gt;<br />&lt;xs:sequence&gt;<br /> &lt;xs:element name=&quot;address&quot; type=&quot;xs:string&quot;/&gt;<br /> &lt;xs:element name=&quot;city&quot; type=&quot;xs:string&quot;/&gt;<br /> &lt;xs:element name=&quot;country&quot; type=&quot;xs:string&quot;/&gt;<br />&lt;/xs:sequence&gt;<br /> &lt;/xs:extension&gt;<br /> &lt;/xs:complexContent&gt;<br />&lt;/xs:complexType&gt;<br />
  17. 17. 专业术语<br />标准的XSD文件是怎么形成的?<br />
  18. 18. 以一个例子作为开始<br />&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br />&lt;router xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;<br />&lt;node id=&quot;EC6&quot; type=&quot;filepoller&quot; x=&quot;217&quot; y=&quot;122&quot; label=&quot;文件轮询器&quot; icon=&quot;images/filepoller.png&quot;&gt;<br />&lt;publiclist&gt;<br />&lt;property name=&quot;service&quot; label=&quot;服务名称&quot; value=&quot;service002&quot; valueType=&quot;String“/&gt;<br /> &lt;property name=“endpoint” label=“端点” value=“endpoint002” valueType=“String”/&gt;<br /> &lt;property name=&quot;file&quot; label=&quot;轮询文件夹&quot; value=&quot;d:/HR/CLINIC/XDS&quot; valueType=&quot;String”/&gt;<br /> &lt;property name=&quot;period&quot; label=&quot;轮询周期(ms)&quot; value=&quot;20000&quot; valueType=&quot;int”/&gt;<br /> &lt;property name=“archive” label=“归档文件夹” value=“d:/HR/CLINIC/backup” valueType=“String”/&gt;<br /> &lt;property name=&quot;deleteFile&quot; label=&quot;是否删除原始文件&quot; value=&quot;true&quot; valueType=&quot;boolean”/&gt;<br /> &lt;property name=&quot;maxSize&quot; label=&quot;过滤文件大小(kb)&quot; value=&quot;20480&quot; valueType=&quot;int”/&gt;<br /> &lt;/publiclist&gt;<br /> &lt;/node&gt;<br /> &lt;node id=&quot;EC8&quot; type=&quot;jmsprovider&quot; x=&quot;34&quot; y=“29&quot; label=&quot;JMS提供者&quot; icon=&quot;images/jmsprovider.png&quot;&gt;<br /> &lt;publiclist&gt;<br /> &lt;property name=&quot;service&quot; label=&quot;服务名称&quot; value=&quot;service001&quot; valueType=&quot;String“/&gt;<br /> &lt;property name=&quot;endpoint&quot; label=&quot;端点&quot; value=&quot;endpoint001&quot; valueType=&quot;String”/&gt;<br /> &lt;property name=&quot;connectionFactory&quot; label=&quot;连接工厂&quot; value=&quot;jms_1&quot; valueType=&quot;jms”/&gt;<br /> &lt;/publiclist&gt;<br /> &lt;/node&gt;<br /> &lt;line id=&quot;EL3&quot; type=&quot;null” label=&quot;路由线&quot; startX=&quot;250&quot; startY=&quot;130&quot; endX=&quot;353&quot; endY=&quot;150&quot; startNodeID=&quot;EC6&quot; startType=&quot;outlet&quot; endNodeID=&quot;EC8&quot; endType=&quot;inlet&quot;/&gt;<br /> &lt;resources&gt;<br /> &lt;resource id=&quot;jms_1”&gt;<br /> &lt;property name=&quot;constructor-arg&quot; value=&quot;tcp://10.4.9.201:44444&quot;/&gt;<br /> &lt;property name=&quot;destinationName&quot; value=&quot;hie.HRA0001&quot;/&gt;<br /> &lt;/resource&gt;<br /> &lt;/resources&gt;<br />&lt;/router&gt;<br />
  19. 19. 命名空间<br />提供避免元素命名冲突的方法<br />既可以放置在根元素上,也可以放在子元素上<br /> xmlns:hie=“http://www.xinaomdt.com/hie/1.0”<br />默认命名空间<br /> 为某个元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。<br />
  20. 20. 目标命名空间<br />这个是XSD独有的,XML是没有的;<br />缺省命名空间和目标命名空间的区别:<br />&lt;xs:schema xmlns=&quot;http://www.w3.org/2001/XMLSchema&quot; <br />targetNamespace=&quot;http://www.xinaomdt.com/hie/router/1.0”&gt;<br />&lt;elementname=&quot;publicList&quot;&gt;<br />&lt;complexType&gt;<br />&lt;sequence&gt;<br /> &lt;element type=“string“/&gt;<br />&lt;/sequence&gt;<br />&lt;/complexType&gt;<br />&lt;/element&gt;<br />...<br />
  21. 21. 指示器<br />Order指示器<br />All <br />Choice <br />Sequence <br />Occurrence 指示器<br />maxOccurs <br />minOccurs <br />Group指示器<br />Group name <br />attributeGroup name <br />
  22. 22. 数据约束<br />我们如何对XML中的数据进行限制呢?<br />
  23. 23. 数据类型的限定<br />
  24. 24. 对值的限定<br />对数值的限定<br />限定 120 &gt;= Age &gt;= 0<br />&lt;xs:simpleType&gt;<br /> &lt;xs:restriction base=&quot;xs:integer&quot;&gt;<br /> &lt;xs:minInclusive value=&quot;0&quot;/&gt;<br /> &lt;xs:maxInclusive value=&quot;120&quot;/&gt;<br /> &lt;/xs:restriction&gt;<br />&lt;/xs:simpleType&gt;<br />限定 120&gt; Age &gt; 0<br />&lt;xs:simpleType&gt;<br /> &lt;xs:restriction base=&quot;xs:integer&quot;&gt;<br /> &lt;xs:minExclusive value=&quot;0&quot;/&gt;<br /> &lt;xs:maxExclusive value=&quot;120&quot;/&gt;<br /> &lt;/xs:restriction&gt;<br />&lt;/xs:simpleType&gt;<br />
  25. 25. 枚举值的限定<br />将值的选择范围限定一个列表中<br />下面定义了一个汽车型号的类型<br />&lt;xs:simpleType name=&quot;carType&quot;&gt;<br /> &lt;xs:restriction base=&quot;xs:string&quot;&gt; <br /> &lt;xs:enumeration value=&quot;Audi&quot;/&gt; <br /> &lt;xs:enumeration value=&quot;Golf&quot;/&gt; <br /> &lt;xs:enumeration value=&quot;BMW&quot;/&gt; <br /> &lt;/xs:restriction&gt; <br />&lt;/xs:simpleType&gt;<br />
  26. 26. 对长度的限定<br />使用length进行限制<br /> &lt;xs:simpleType&gt;<br /> &lt;xs:restriction base=&quot;xs:string&quot;&gt;<br /> &lt;xs:length value=&quot;8&quot;/&gt;<br /> &lt;/xs:restriction&gt;<br /> &lt;/xs:simpleType&gt;<br />使用minLength、MaxLength进行限制<br />&lt;xs:simpleType&gt;<br /> &lt;xs:restriction base=&quot;xs:string&quot;&gt;<br /> &lt;xs:minLength value=&quot;5&quot;/&gt;<br /> &lt;xs:maxLength value=&quot;8&quot;/&gt;<br /> &lt;/xs:restriction&gt;<br />&lt;/xs:simpleType&gt;<br />
  27. 27. 正则表达式的限定<br />将内容限制定义为一系列可使用的数字或字母;<br />在XSD中进行正则表达式限定叫做模式约束(pattern);<br />示例Schema:<br />&lt;xs:simpleType&gt;<br /> &lt;xs:restriction base=&quot;xs:string&quot;&gt; <br /> &lt;xs:pattern value=&quot;[a-z]&quot;/&gt; <br /> &lt;/xs:restriction&gt; <br />&lt;/xs:simpleType&gt;<br />
  28. 28. 默认值和固定值<br />简单类型是可以支持默认值和固定值的。<br />默认值<br />当没有其他的值被规定时,默认值就会自动分配给元素。<br />&lt;xs:element name=&quot;color&quot; type=&quot;xs:string&quot; default=&quot;red&quot;/&gt;<br /> &lt;xs:attribute name=&quot;color&quot; type=&quot;xs:string&quot; default=&quot;red&quot;/&gt;<br />固定值<br />固定值同样会自动分配给元素,并且您无法规定另外一个值。<br /> &lt;xs:element name=&quot;color&quot; type=&quot;xs:string&quot; fixed=&quot;red&quot;/&gt;<br /> &lt;xs:attribute name=&quot;color&quot; type=&quot;xs:string&quot; fixed=&quot;red&quot;/&gt;<br />
  29. 29. 空值的表示<br />对于属性:<br />使用属性 use=&quot;optional/required&quot;<br />对于元素:<br />使用属性 nillable=&quot;true/false&quot;<br />使用属性 minOccurs=&quot;0&quot;<br />空值示例Schema<br />&lt;complexType name=&quot;TypeWithNullElements&quot;&gt;<br /> &lt;sequence&gt;<br /> &lt;element name=&quot;nillableElem&quot; nillable=&quot;true&quot; type=&quot;int&quot;/&gt;<br /> &lt;element name=&quot;minOccursElem&quot; minOccurs=&quot;0&quot; type=&quot;int&quot;/&gt;<br /> &lt;/sequence&gt;<br />&lt;/complexType&gt;<br />
  30. 30. 空值的示例<br />带数值的元素<br />&lt;typeWithNullElements&gt;<br /> &lt;nillableElem&gt;5&lt;/nillableElem&gt;<br /> &lt;minOccursElem&gt;5&lt;/minOccursElem&gt;<br />&lt;/typeWithNullElements&gt;<br />不带数值的元素<br />&lt;typeWithNullElements&gt;<br /> &lt;nillableElem xsi:nil=&quot;true&quot;/&gt;<br />&lt;/typeWithNullElements&gt;<br />

×