XML Schema(XSD)
XML Schema只是XMLSchema语言当中的一种。因为容易与XML相混淆,有些人叫WXS(W3C XML Schema),有些人叫XSD(XMLSchema Definition)。 XML Schema就是写一套规则来约束一个XML文档必须遵循的规范。但与其它Schema不同的是,XSD还会验证数据类型(datatypes)。验证后的这些反馈信息集对于XML文件处理软件来说非常有用,不过因为要进行数据类型验证也招来了批评,因为不是所有XML文件内容需要进行数据类型验证。 XML Schema文件的后缀是xsd,MIME是application/xml或text/xml。当一个XML文件需要通过xsd验证时,可以把这个schema作为参数传给validationengine,或者通过xsi:schemaLocation和xsi:noNamespaceSchemaLocation来告诉验证引擎去哪找。 Schema成份(components)·元素声明:包括元素名和目标命名空间。 ·属性声明(attributedeclaration):同样包含属性的名字和目标命名空间,属性的值可以有默认值,也可能是固定值。 ·简单和复杂类(simpleand complex types) ·模型组(modelgroup)和属性组(attribute group):本质上是宏指令(macros):被命名的元素组和属性组可以在其它不同类型的定义中重用。 ·元素使用(attributeuse):指的是一个复杂类与一个属性声明的关系,指示某个attribute是强制的还是可选的。 ·基本粒子(elementparticle):代表一个复杂类与一个元素声明的关系,比如指示某个元素在内容中出现的最小和最大次数。可以使用通配符(wildcard,一般是*)。 类型(types)XSD提供了19种基本数据类型:anyURI,base64Binary,Boolean,date,dateTime,decimal,double,float,duration,hexBinary,gDay,gMonth,gYear,gMonthDay,gYearMonth,NOTATION,QName,String,time。 另外还提供了三种机制来构造新的数据类型: ·限制(restriction):指示只允许某些数据类型; ·列表(list):允许一列值; ·并集(union):允许不同类型的值; 通过这三个机制,XSD又衍生出了25种新的数据类型,这些新的数据类型也在XSD中,这些就是复杂类型。 验证信息集(post-schema-validationinfoset)在做完XSD验证后,就可以用一些数据模型来表达一个XML文件的结构和内容了。XML的数据模型包括: ·词表(元素和属性名) ·内容模型(关系和结构) ·数据类型 这些信息的集合就叫Post-Schema-ValidationInfoset(PSVI)。 示例SampleAddress.xsd: <?xml version="1.0" encoding="utf-8"?> <xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Address"> <xs:complexType> <xs:sequence> <xs:element name="Recipient" type="xs:string" /> <xs:element name="House" type="xs:string" /> <xs:element name="Street" type="xs:string" /> <xs:element name="Town" type="xs:string" /> <xs:element name="County" type="xs:string" minOccurs="0" /> <xs:element name="PostCode" type="xs:string" /> <xs:element name="Country" minOccurs="0"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="IN" /> <xs:enumeration value="DE" /> <xs:enumeration value="ES" /> <xs:enumeration value="UK" /> <xs:enumeration value="US" /> </xs:restriction> </xs:simpleType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>一些开发工具就可以用图形化的方式把这个Schema表示出来: 一个遵循该XSD的XML文档: <?xml version="1.0" encoding="utf-8"?>
<Address xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="SimpleAddress.xsd">
<Recipient>Mr. Walter C. Brown</Recipient>
<House>49</House>
<Street>Featherstone Street</Street>
<Town>LONDON</Town>
<PostCode>EC1Y 8SY</PostCode>
<Country>UK</Country>
</Address> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |