首页 > 代码库 > XML Schema约束
XML Schema约束
schema规范中:
1. namespace : schema文件的标识属性,相当于id,每个schema文件需要有一个唯一的namespace值;
2. targetNameSpace :指定当前schema文件的namespace值,它的值是一个url(很有可能不存在);
3. xmlns :引入一个schema约束,它的值为一个schema的namespace值
属性? : 用xmlns属性
属性值: 对应的schema文件的id(namespace值)
4.schemaLocation:如果引入的schema不是w3c组织定义,必须指定schema文件的位置;
5.element :定义标签(常用类型:string,decimal,integer,boolean,date,time)
6.elementFormDefault:控制元素。有两个取值:"qualified"-在XML文档中使用局部元素时,必须使用限定短名作为前缀;unqualified-在XML文档中使用局部元素时,可以省略限定短名;
7.attributeFormDefault:控制属性的。用法与elementFormDefault一样;
8.如果引入了N个约束, 需要给n-1个取别名(如下:xsd为w3c约束的别名);
复杂类型:一个元素如有属性或者包含子元素,那么这个元素就是复杂类型。复杂类型使xs:complexType定义。复杂类型要么具有简单内容,要么具有复杂内容。内容是指在开始标签和结束标签之间的字符数据和子元素。简单内容是指内容只具有字符数据没有子元素,简单内容是用xs:simpleContent元素来定义(简单内容要有属性,否则等同于简单类型)。除此之外的就是复杂内容,使用xs:complexContent来定义。
xsd:attribute元素的use、default、fixed属性
use属性指示xsd:attribute元素是否需要出现,其有效值为:optional(可选的,use属性的默认值)、prohibited(禁止使用属性)、required(属性是必须的)。对全局声明的属性不能使用use属性。
例子:book.xsd
<?xml version="1.0" encoding="UTF-8" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ciyo.com/bookSchema" elementFormDefault="qualified"> <xsd:element name="bookrack"> <xsd:complexType> <xsd:sequence> <!--maxOccurs :限定元素个数,一个书架最多基本书--> <xsd:element name="book" maxOccurs="3"> <!--complexType:复杂类型--> <xsd:complexType> <!--sequence:有顺序--> <xsd:sequence> <xsd:element name="name" type="xsd:string" /> <xsd:element name="author"> <xsd:complexType> <xsd:sequence> <xsd:element name="firstname" type="xsd:string"/> <xsd:element name="lastname" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="price"> <!--simpleType:简单类型--> <xsd:simpleType> <!--restriction:限定--> <xsd:restriction base="xsd:integer"> <!--minInclusive:最小值;pattern :正则;length:长度;enumeration:枚举;--> <xsd:minInclusive value="http://www.mamicode.com/0"/> <!--maxInclusive:最大值--> <xsd:maxInclusive value="http://www.mamicode.com/120"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="desc"> <!--complexType:复杂类型--> <xsd:complexType> <!--simpleContent:简单内容--> <xsd:simpleContent> <xsd:extension base="xsd:string"> <!--use属性: optional:可选; required:必填;prohibited:禁用属性--> <!--default属性:默认值 EN;--> <!--fixed属性:指示固定值,不管该属性出现不出现,该属性的值都是EN--> <xsd:attribute name="lang" use="required" default="EN"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>
book.xml
<?xml version="1.0" encoding="UTF-8"?> <!--书架--> <bookrack xmlns="http://www.ciyo.com/bookSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:schemaLocation="http://www.ciyo.com/bookSchema book.xsd"> <!--书--> <book> <!--书名--> <name>JavaScript开发</name> <!--作者--> <author> <firstname>John</firstname> <lastname>Smith</lastname> </author> <!--价格--> <price>100</price> <!--描述--> <desc lang="EN">EN</desc> </book> </bookrack>
restriction数据类型的限定:
本文出自 “ciyo技术分享” 博客,请务必保留此出处http://ciyorecord.blog.51cto.com/6010867/1928564
XML Schema约束