标签定义:

       对于该类标签的定义,spring中有着相应的XSD定义文档

       http://www.springframework.org/schema/beans

 

       对于XSD,简单的说是xml的一个标签的定义,在这里就不对XSD过多的解释了,祥见

       http://www.w3school.com.cn/schema/schema_example.asp

       这里就简单就应用中会经常碰到的一些定义进行说明一下。

  对数据库连接进行进一步的封装,使配置简单化。

      由原来的配置方式:


Xml代码 


1. <bean id="dataSource"
2. class="org.springframework.jdbc.datasource.DriverManagerDataSource">
3. <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
4. <property name="url"
5. value="jdbc:mysql://localhsost/freebug?useUnicode=true&characterEncoding=utf8&autoReconnect=true"></property>
6. <property name="username">
7. <value>root</value>
8. </property>
9. <property name="password">
10. <value>root</value>
11. </property>
12. </bean>
13.   
14. <!-- 会话 -->
15. <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
16. <property name="configLocation" value="classpath:SqlMapCommonConfig.xml" />
17. <property name="dataSource" ref="dataSource" />
18. </bean>

    改为:


Xml代码 



  1. <mysql:client id="sqlMapClient" datasouceip="localhsost"  characterEncoding="utf8"
  2. dbname="freebug"   username="root" password="root"
  3. configLocation="classpath:SqlMapCommonConfig.xml" />

从这里面,对配置进行了一次简化的处理。其他很多的信息属性还可以进行默认和正则式的限制。

 

   如何做到使上面的配置可以成立,这就要求着,对这个标签进行xsd规范的定义。

 

标签定义

   定义如下:


Xml代码  

axios 自定义属性 自定义xsd_java


1. <?xml version="1.0" encoding="UTF-8"?>
2. <xsd:schema xmlns="http://sammor.javaeye.com/schema/tags"
3. xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:beans="http://www.springframework.org/schema/beans"
4. targetNamespace="http://sammor.javaeye.com/schema/tags"
5. elementFormDefault="qualified" attributeFormDefault="unqualified">
6. <xsd:import namespace="http://www.springframework.org/schema/beans" />
7. <xsd:element name="client">
8. <xsd:annotation>
9. <xsd:documentation>connect to mysql</xsd:documentation>
10. </xsd:annotation>
11. <xsd:complexType>
12. <xsd:complexContent>
13. <!-- 继承定义 从namespace="http://www.springframework.org/schema/beans" -->
14. <xsd:extension base="beans:identifiedType">
15. <xsd:attribute name="dbname" type="xsd:string" use="required" />
16. <xsd:attribute name="datasouceip" type="xsd:string"
17. use="optional" default="127.0.0.1" />
18. <xsd:attribute name="username" type="xsd:string" use="required" />
19. <xsd:attribute name="password" type="xsd:string" use="required" />
20. <xsd:attribute name="characterEncoding" type="xsd:string"
21. default="utf8">
22. <xsd:simpleType>
23. <xsd:restriction base="xsd:string">
24. <xsd:enumeration value="utf8" />
25. <xsd:enumeration value="gbk" />
26. </xsd:restriction>
27. </xsd:simpleType>
28. </xsd:attribute>
29. <xsd:attribute name="configLocation" type="xsd:string"
30. default="classpath:SqlMapCommonConfig.xml" />
31. </xsd:extension>
32. </xsd:complexContent>
33. </xsd:complexType>
34. </xsd:element>
35. </xsd:schema>

说明:


Xml代码  

axios 自定义属性 自定义xsd_java


1. xsd:element     表示定义标签  
2. xsd:extension  如java中的继承,把现有的定义继承进来  
3. xsd:attribute    标签带有的属性  
4. xsd:restriction  对标签改属性进一步的限制,进行一些值的约束


p.s:有时,可能会在


Xml代码  

axios 自定义属性 自定义xsd_java


1. <xsd:extension base="beans:identifiedType">


    处报出错误


Xml代码  

axios 自定义属性 自定义xsd_java



1. src-resolve: Cannot resolve the name 'beans:identifiedType' to a(n) 'type definition' component.


    请跳过,这个不影响使用,只是ide的检查有问题。

 

声明标签

     对于写好的标签定义需要把他公布到应用中,使其他spring的xml中,可用,需要几步:

1、在classpath资源路径下加入文件:

      

 2、spring.schemas该文件中填写:


Xml代码  

axios 自定义属性 自定义xsd_java



    1. http\://sammor.javaeye.com/schema/tags/springtags.xsd=conf/springtag.xsd


         其中http后的“\”为转义的意思

     

     3、在spring的配置文件xml头部加入


     在配置文件中声明引用xsd定义

     

    当然,到这一步的时候,还仅是对定义一种自定义标签的写法,接下来,如何去做到标签的实现处理,还要做进一步的处理。spring自定义标签之三 —— 自我实现

     

    p.s 关于xsd的规范学习,还有很多很多,它是一个强大的规范,可以为我们做很多的基础信息和约束,为使用者提供更安全方便的做法。