什么是 XML Schema?
<schema> 元素是每一个 XML Schema 的根元素
<schema> 元素可包含属性。一个 schema 声明往往看上去类似这样:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" schema 中用到的元素和数据类型来自命名空间 "http://www.w3.org/2001/XMLSchema"。同时它还规定了来自命名空间 "http://www.w3.org/2001/XMLSchema" 的元素和数据类型应该使用前缀 xs
targetNamespace="http://www.w3school.com.cn" 显示被此 schema 定义的元素来自命名空间: "http://www.w3school.com.cn"。
xmlns="http://www.w3school.com.cn" 默认的命名空间是 "http://www.w3school.com.cn"
elementFormDefault="qualified"> 任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定
...
...
</xs:schema>
什么是简易元素?
简易元素指那些仅包含文本的元素。它不会包含任何其他的元素或属性。
定义简易元素的语法:<xs:element name="xxx" type="yyy"/>
常用类型
简易元素可拥有指定的默认值或固定值。
当没有其他的值被规定时,默认值就会自动分配给元素,在下面的例子中,缺省值是 "red":<xs:element name="color" type="xs:string" default="red"/>
固定值同样会自动分配给元素,并且您无法规定另外一个值。在下面的例子中,固定值是 "red":<xs:element name="color" type="xs:string" fixed="red"/>
定义属性的语法是:<xs:attribute name="xxx" type="yyy"/>简易元素无法拥有属性,属性本身总是作为简易类型被声明的
常用类型
属性可拥有指定的默认值或固定值。
当没有其他的值被规定时,默认值就会自动分配给元素。在下面的例子中,缺省值是 "EN":<xs:attribute name="lang" type="xs:string" default="EN"/>
固定值同样会自动分配给元素,并且您无法规定另外的值。在下面的例子中,固定值是 "EN":<xs:attribute name="lang" type="xs:string" fixed="EN"/>
在缺省的情况下,属性是可选的。如需规定属性为必选,请使用 "use" 属性:<xs:attribute name="lang" type="xs:string" use="required"/>
限定(restriction)用于为 XML 元素或者属性定义可接受的值。对 XML 元素的限定被称为 facet。
数据类型的限定
复合元素包含了其他的元素及/或属性
注释:上述元素均可包含属性!
例一:复合元素,"product",是空的:<product pid="1345"/>
例二:复合元素,"employee",仅包含其他元素:<employee><firstname>John</firstname><lastname>Smith</lastname></employee>
例三:复合元素,"food",仅包含文本,<food type="dessert">Ice cream</food>
例四:复合元素,"description",包含元素和文本<description>It happened on <date lang="norwegian">03.03.99</date> ....</description>
在 XML Schema 中,我们有两种方式来定义复合元素
1. 通过命名此元素,可直接对"employee"元素进行声明,就像这样:
2. "employee" 元素可以使用 type 属性,这个属性的作用是引用要使用的复合类型的名称:
如果您使用了上面所描述的方法,那么若干元素均可以使用相同的复合类型,比如这样:
您也可以在已有的复合元素之上以某个复合元素为基础,然后添加一些元素,就像这样:
原文:https://www.cnblogs.com/catherine9192/p/9083087.html