Java Config XSD

在Java开发中我们经常使用到第三方框架,例如Spring,而Spring框架的配置文件如果之前没有配置过,或者它不常使用的属性我们都不知道如何配置。其它Spring配置文件中顶部都里面都是对应的xsd文件,它来规范我们来编写xml配置文件。相信通过以下的文章大家可以知道如何的通过XSD文件来准确的配置Java框架的xml文件。

1、Xml Schema的用途

xsd是XML Schema Definition 缩写.可扩展标记语言架构是以可扩展标记语言(标准通用标记语言的子集)为基础的,它用于可替代文档类型定义(外语缩写:DTD);一份XML schema文件描述了可扩展标记语言文档的结构。它的主要用途如下:

  1. 定义可出现在文档中的元素
  2. 定义可出现在文档中的属性
  3. 定义哪个元素是子元素
  4. 定义子元素的次序
  5. 定义子元素的数目
  6. 定义元素是否为空,或者是否可包含文本
  7. 定义元素和属性的数据类型
  8. 定义元素和属性的默认值以及固定值
2、Xml Schema根元素
<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 表示数据类型等定义来自w3

targetNamespace="http://www.w3schools.com" 表示文档中要定义的元素来自什么命名空间

xmlns="http://www.w3schools.com"表示此文档的默认命名空间是什么

elementFormDefault="qualified"> 表示要求xml文档的每一个元素都要有命名空间指定

……定义主体部分……

</xs:schema>
3、定义一个简单元素

简易元素指那些只包含文本的元素。它不会包含任何其他的元素或属性。

这里写图片描述

4、定义一个属性

简易元素无法拥有属性。假如某个元素拥有属性,它就会被当作某种复合类型。但是属性本身总是作为简易类型被声明的。

这里写图片描述

5、定义元素或者属性值的限制

1).最大值最小值限制

<xs:element name="age">
    <xs:simpleType>
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="0"> 表示大于等于0,</xs: minExclusive>表示最小值但是不包括指定值
            <xs:maxInclusive value="120"> 表示小于等于120,</xs: maxExclusive>
        </xs:restriction>
    </xs:simpleType>
</xs:element>

2).枚举限制,指只能在指定的几个值中取值

<xs:element name="car" type="carType"/>
    <xs:simpleType name="carType">
    <xs:restriction base="xs:string">
        <xs:enumeration value="Audi"/>
        <xs:enumeration value="Golf"/>
        <xs:enumeration value="BMW"/>
    </xs:restriction>
</xs:simpleType>

3)模式(pattern)限制,指字符串的格式必须满足制定的匹配模式

3.1)对值的限定

下面的例子定义了带有一个限定且名为 “age” 的元素。age 的值不能低于 0 或者高于 120:
这里写图片描述

3.2)对一组值的限定

如需把 XML 元素的内容限制为一组可接受的值,我们要使用枚举约束(enumeration constraint)。
下面的例子定义了带有一个限定的名为 “car” 的元素。可接受的值只有:Audi, Golf, BMW:

这里写图片描述

注释:在这种情况下,类型 “carType” 可被其他元素使用,因为它不是 “car” 元素的组成部分。

3.3)对一系列值的限定

如需把 XML 元素的内容限制定义为一系列可使用的数字或字母,我们要使用模式约束(pattern constraint)。
下面的例子定义了带有一个限定的名为 “letter” 的元素。可接受的值只有小写字母 a - z 其中的一个:

这里写图片描述

3.4)对一系列值的其他限定
下面的例子定义了带有一个限定的名为 “letter” 的元素。可接受的值是 a - z 中零个或多个字母:

这里写图片描述

3.5)对长度的限定

如需限制元素中值的长度,我们需要使用 length、maxLength 以及 minLength 限定。
本例定义了带有一个限定且名为 “password” 的元素。其值必须精确到 8 个字符:

这里写图片描述

6、定义复杂类型

复杂类型是指定义元素中包含属性或者子元素的类型

1)定义只包含子元素的复杂类型

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

2)定义只包含属性的复杂类型

<xs:element name="product" type="prodtype"/>
<xs:complexType name="prodtype">
  <xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:complexType>

3)定义只包含内容的复杂类型

<xs:element name="shoesize" type="shoetype"/>
<xs:complexType name="shoetype">
  <xs:simpleContent>
    <xs:extension base="xs:integer">
      <xs:attribute name="country" type="xs:string" />
    </xs:extension>
  </xs:simpleContent>
</xs:complexType>

4)定义包含内容和子元素混合的复杂类型

<xs:element name="letter">
  <xs:complexType mixed="true">
    <xs:sequence>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="orderid" type="xs:positiveInteger"/>
      <xs:element name="shipdate" type="xs:date"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>
7、数据类型

1)字符串数据类型(String Data Type)

字符串数据类型可包含字符、换行、回车以及制表符。下面是一个关于某个 scheme 中字符串声明的例子:

<xs:element name="customer" type="xs:string"/>

文档中的元素看上去应该类似这样:

<customer>John Smith</customer>

或者类似这样:

<customer>  John Smith  </customer>

注释:如果您使用字符串数据类型,XML 处理器就不会更改其中的值。

2)日期及时间数据类型(Date and Time Data Types)

日期数据类型用于定义日期。下面是一个有关 schema 中日期声明的例子:

<xs:element name="start" type="xs:date"/>

文档中的元素看上去应该类似这样:

<start>2002-09-24</start>

3)数值数据类型(Numeric Data Types)

十进制数据类型用于规定一个数值。下面是一个关于某个 scheme 中十进制数声明的例子。

<xs:element name="prize" type="xs:decimal"/>

文档中的元素看上去应该类似这样:

<prize>999.50</prize>

或者类似这样:

<prize>+999.5450</prize>

或者类似这样:

<prize>-999.5230</prize>

注释:您可规定的十进制数字的最大位数是 18 位。

4)杂项数据类型(Miscellaneous Data Types)

逻辑数据性用于规定 true 或 false 值。下面是一个关于某个 scheme 中逻辑声明的例子:

<xs:attribute name="disabled" type="xs:boolean"/>

文档中的元素看上去应该类似这样:

<prize disabled="true">999</prize>

注释:合法的布尔值是 true、false、1(表示 true) 以及 0(表示 false)。

参考地址:Schema 教程
本文只是截取参考地址的重点内容,具体信息可以参考以上XSD教程网站。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值