http://www.w3school.com.cn/schema/schema_example.asp
(1)使用了标准的命名空间 (xs)
xs:schema表示xs的子元素schema;
里面xmlns:xs表示子元素schema的标准命名空间xs;
等号后面的"http://www.w3.org/2001/XMLSchema"是与标准命名空间xs相关联的URI,是子元素schema的语言定义。
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
...
</xs:schema>
(2)我们来自定义一个 "beans" 元素。此元素拥有一个属性,其中包含其他的元素,因此我们将它认定为复合类型。"beans" 元素的子元素被 xs:sequence 元素包围,定义了子元素的次序:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="beans">
<xs:complexType>
<xs:sequence>
...
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
(3)我们来为"beans" 元素定义一个简易类型的子元素"simpleBean"
<xs:element name="simpleBean"></xs:element>
(4)我们来为"beans" 元素定义一个复合类型的子元素"complexBean"
<xs:element name="complexBean">
<xs:complexType>
<xs:sequence>
<xs:element name="property"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
(5)我们来为子元素"complexBean"的子元素"property"定义几个属性吧
<xs:element name="property">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="value" type="xs:string" use="required"/>
<xs:attribute name="ref" type="xs:string"/>
</xs:complexType>
</xs:element>
(6)最后的结果是
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="beans">
<xs:complexType>
<xs:sequence>
<xs:element name="simpleBean"></xs:element>
<xs:element name="complexBean">
<xs:complexType>
<xs:sequence>
<xs:element name="property">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="value" type="xs:string" use="required"/>
<xs:attribute name="ref" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="class" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
(7)我们将它改一下:
beans.xsd
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="beans">
<xs:complexType>
<xs:sequence>
<xs:any maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="simpleBean"></xs:element>
<xs:element name="complexBean">
<xs:complexType>
<xs:sequence>
<xs:any maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required" />
<xs:attribute name="class" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="property">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="value" type="xs:string"/>
<xs:attribute name="ref" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:schema>
使用它来写xml文件
beans.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<beans
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="spring-beans.xsd">
<simpleBean></simpleBean>
<complexBean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"></complexBean>
<complexBean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="mapperLocations" value="classpath:com/dao/*Mapper.xml"/>
</complexBean>
</beans>