XML Schema(XSD)

前端之家收集整理的这篇文章主要介绍了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>
@H_404_68@一些开发工具就可以用图形化的方式把这个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>@H_404_68@

猜你在找的XML相关文章