XML Schema复杂元素2
接上一篇:XML Schema复杂元素.
四、ref引用
ref可以在元素中直接引用其他元素的声明。
-
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="objects"> <xs:complexType> <xs:sequence> <xs:element name="example"> <xs:complexType> <xs:sequence> <xs:element ref="ele_string"/> <xs:element ref="ele_int"/> <xs:element ref="ele_bool"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="instance"> <xs:complexType> <xs:sequence> <xs:element ref="ele_string"/> <xs:element ref="ele_int"/> <xs:element ref="ele_bool"/> <xs:element name="ele_date" type="xs:date"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="ele_string" type="xs:string"/> <xs:element name="ele_int" type="xs:integer"/> <xs:element name="ele_bool" type="xs:boolean"/> </xs:schema
1、元素组
元素组是指将若干个元素声明归为一组,当需要进行引用时,直接引用组名。如上面的schema可以这么定义:
-
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="objects"> <xs:complexType> <xs:sequence> <xs:element name="example"> <xs:complexType> <xs:sequence> <xs:group ref="testGrop"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="instance"> <xs:complexType> <xs:sequence> <xs:group ref="testGrop"/> <xs:element name="ele_date" type="xs:date"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:group name="testGrop"> <xs:sequence> <xs:element name="ele_string" type="xs:string"/> <xs:element name="ele_int" type="xs:integer"/> <xs:element name="ele_bool" type="xs:boolean"/> </xs:sequence> </xs:group> </xs:schema
2、属性组
属性组将若干个属性声明归为一组,当需要时,可直接引用。
-
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="example"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attributeGroup ref="attrGroup"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:attributeGroup name="attrGroup"> <xs:attribute name="font" type="xs:string"/> <xs:attribute name="size" type="xs:string"/> <xs:attribute name="bold" type="xs:string"/> </xs:attributeGroup> </xs:schema