B.2.Authoring the schema
B.2. Authoring the schema
Creating an XML configuration extension for use with Spring's IoC container starts with authoring an XML Schema to describe the extension. What follows is the schema we'll use to configure SimpleDateFormat
objects. The emphasized line contains an extension base for all tags that will be identifiable (meaning they have an id
attribute that will be used as the bean identifier in the container).
#### myns.xsd (inside package org/springframework/samples/xml) <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns="http://www.springframework.org/schema/myns" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:beans="http://www.springframework.org/schema/beans" targetNamespace="http://www.mycompany.com/schema/myns" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xsd:import namespace="http://www.springframework.org/schema/beans"/> <xsd:element name="dateformat"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="beans:identifiedType"> <xsd:attribute name="lenient" type="xsd:boolean"/> <xsd:attribute name="pattern" type="xsd:string" use="required"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> </xsd:schema>
The above schema will be used to configure SimpleDateFormat
objects, directly in an XML application context file using the myns:dateformat
configuration directive. As noted above, the id
attribute will (in this case) be used as the bean identifier for the SimpleDateFormat
bean.
<myns:dateformat id="dateFormat" pattern="yyyy-MM-dd HH:mm" lenient="true"/>
Note that after we've created the infrastructure classes, the above snippet of XML will essentially be exactly the same as the following XML snippet. In other words, we're just creating a bean in the container, identified by dateFormat
of type SimpleDateFormat
, with a couple of properties set.
<bean id="dateFormat"> <constructor-arg value="yyyy-HH-dd HH:mm"/> <property name="lenient" value="true"/> </bean>
注意
The schema-based approach to creating configuration format, allows for tight integration with an IDE that has a schema-aware XML editor. Using properly authored schema, you can for example use autocompletion to have a user choose between several configuration options defined in the enumeration.