实验环境:xmlspy2013 firefox;
1、问题:
对于下列XML文档 "1.0" encoding="GB2312" 创建一个Schema文档,并应用于给定的XML文档。要求如下: l Order元素在XML文档中可以出现多次,但是至少要出现一次。 l OrderID的值的格式必须是AXXX,其中X为0~9的数字。 l number的值的格式要在1~99之间。 l zip元素的内容的格式必须是XXXXXX,其中X为0~9的数字。
|
2、解决方案步骤:
NO.1:将该实验内容用xmlspy2018建立xml文件
NO.2:用xmlspy的DTD/Schema菜单项中的GenerateDTD/Schema功能,选择W3C Schema单选按钮,单击ok,自动生成后缀名为xsd的的Schema文件。
NO.3:Order元素在文档中出现一次或多次,即在Orders的元素中设置
minOccurs=”1” maxOccurs=”unbounded”。
NO.4:OrderID是属性,必须在attribute中设置。<xs:patternvalue=”A\d{3}”>
NO.5:number是元素内容的值,在element中设置<xs:minInclusive=”1”>
<xs:maxInclusice=”99”>
NO.6:设置zip元素的内容的值,在element中设置为<xs:patternvalue=”\d{6}”>
3、调试过程及其显示结果:
输出schema文件*.xsd的显示结果:
<?xml version="1.0" encoding="UTF-8"?>
<!-- W3C Schema generated by XMLSpy v2018 (http://www.altova.com) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Orders">
<xs:complexType>
<xs:sequence>
<xs:element ref="Order" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Order" >
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="number"/>
<xs:element ref="city"/>
<xs:element ref="zip"/>
</xs:sequence>
<xs:attribute name="orderID" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="A\d{3}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="orderDate" use="required">
<xs:simpleType>
<xs:restriction base="xs:date">
<xs:enumeration value="2009-01-20"/>
<xs:enumeration value="2009-03-20"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="zip">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:pattern value="\d{6}"/>
<xs:enumeration value="266000"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="city">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="北京"/>
<xs:enumeration value="青岛"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="name">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="文具"/>
<xs:enumeration value="玩具"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="number">
<xs:simpleType>
<xs:restriction base="xs:byte">
<xs:minInclusive value="1"/>
<xs:maxExclusive value="99"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
至此,基于schema的xml格式验证成功。
4、调试过程中所要记住的问题:
XML Schema的数据类型
包括Primitive原始数据类型(string,dateTime等)
包括Derived派生数据类型(intrger,int,time,date等)
包括simpleType元素的常用字元素(enumeration枚举,maxInclusive,Pattern等)
了解Schema的文档结构及其定义。
命名空间为:http://www.w3c.org/2001/XMLSchema