XML的Schema约束

XSD文档至少要包含:schema根元素和XML模式命名空间的定义、元素定义。需要注意的是XSD中必须定义一个且只能定义一个schema根元素,根元素中包括模式的约束,XML模式命名空间的定义,其他命名空间的定义、版本信息、语言信息和其他一些信息。

1、schema根元素定义

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  ...
</xsd:schema>

 2、普通元素定义

<xsd:element name="user" type="xsd:string" />

XSD中元素是利用element标识符来声明,在上面的示例中name属性是元素的名字,type属性是元素值的类型,可以使XML Schema中内置的数据类型或其他类型。

全部元素如下:

元素 说明
name 元素的名称
type 元素值的类型
minOccurs 该元素在父元素中最少出现的次数(默认为1,必须大于等于0)
maxOccurs 该元素在父元素中最多出现的次数(默认为1,必须大于等于0),当设置为unbounded表示不限制。

2.1 元素引用:避免在文档中多次定义同一个元素,可以使用元素的引用:

<xsd:element name="user" type="xsd:string" />
<xsd:sequence>
    <xsd:element ref="user" />  <!--当前元素就是user元素-->
</xsd:sequence>

2.2 元素别名:先定义

<xsd:element name="user" type="xsd:string" substitutionGroup="yonghu" />

后使用

<yonghu>admin</yonghu>
<user>admin</user>

2.3 默认值与固定值

通过default属性的设置,可以在XML文档中没有对city定义时赋予默认值,而是用fixed属性,可以给元素country设定一个固定的值china,并且不允许改变。

<xsd:element name="city" type="xsd:string" default="xian" />
<xsd:element name="country" type="xsd:string" fixed="china" />

2.4 组合器

sequence组合器,定义了一列元素必须按照模式中指定的顺序显示(如果是可选的,也可以不显示)。

<xsd:sequence>
  <xsd:element name="first" type="xsd:string" />
  <xsd:element name="middle" type="xsd:string" />
  <xsd:element name="last" type="xsd:string" />
</xsd:sequence>

   all组合器,允许所定义的元素可以按照任意顺序显示,all元素的子元素在默认情况下是必须的,而且每次最多显示一次。

<xsd:all minOccurs="0">
  <xsd:element name="first" type="xsd:string" />
  <xsd:element name="middle" type="xsd:string" />
  <xsd:element name="last" type="xsd:string" />
</xsd:all>

choice组合器,允许指定多组声明中的一个,用于互斥情况。

<xsd:choice>
  <xsd:element name="first" type="xsd:string" />
  <xsd:element name="middle" type="xsd:string" />
  <xsd:element name="last" type="xsd:string" />
</xsd:choice>

3、定义属性

    在XML Schema文档中可以按照定义元素的方法定义属性,但受限制程度较高。可以应用在attribute元素定义中的属性如下表所示。

属性 含义
defalt 初始默认值
fixed 不能修改和覆盖的固定属性值
name 属性的名称
ref 对前一个属性定义的引用
type 该属性的XSD类型或者简单类型
use 如何使用属性 optional(可选属性,即属性不是必须的,默认是这个)、prohibited(禁止使用)或者required(强制必须)。
form 确定attributeFormDefault的本地址
id 模式文档中属性唯一的ID

创建属性

<xsd:attribute name="age" type="xsd:integer" />

该语句定义了一个名为age的属性,它的值必须为整数。把它添加到模式中时,它必须是schema元素,complexType元素或者attributeGroup元素的子元素

<xsd:element name="name">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element name="first" type="xsd:string" />
    </xsd:sequence>
    <xsd:attribute name="age" type="xsd:integer" use="optional" />   <!--将属性添加到元素name属性中-->  
  </xsd:complexType>
</xsd:element>

以上文档对应有效的XML文档如下:

<?xml version="1.0"?>
<name age="27">
  <first>string</first>
</name>

本文摘自:逆心XML Schema <第三篇>

时间: 2024-10-29 00:42:21

XML的Schema约束的相关文章

xml语法、DTD约束xml、Schema约束xml、DOM解析xml

今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的html语言,html是超文本标记语言,使用html语言规定好的标签来封装文本数据.而html使用的标签html语言规定好的,每个标签都有自己特定的功能. xml语言,可扩展的标记语言,这门语言它没有定义任何的标记,而标记是由使用者自己来定义,但是由于标签名称以及属性名称都由用户自己来命名,导致别人在使

XML技术-Schema约束-Dom4j-Xpath详解

这辈子没办法做太多事情所以每一件都要做到精彩绝伦 People can't do too many things in my life,so everything will be wonderful   乔布斯 本文档参考资料w3cschool.CHM  API教程文档免费下载地址http://down.51cto.com/data/2300287 XML技术 1.     什么是XML XML 指可扩展标记语言EXtensibleMarkup Language XML 是一种标记语言很类似 H

xml的schema约束(Java)

1.schema约束 *dtd语法:<!ELEMENT 元素名称 约束> schema符合xml的语法,是xml语句. 一个xml文件中可以有多个schema,多个schema使用名称空间来区分(类似于java中的包),而一个xml文件中只能有提个dtd. dtd中有PCDATA类型,而在schema中支持多种数据类型,比如,年龄只能是一个整数,在schema中可以直接定义一个整数类型. schema语法更加复杂,目前不能代替dtd. person.xml <?xml version=&

关于XML和Schema约束的一些总结。

在学习XML约束的时候DTD约束还比较易懂(也可能是错觉),但是Schema约束的命名空间.引入,Schemalocation等比较难懂,总结一下最近自己查看其他专家的博客琢磨出来的东西 <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" //这里可能有错误,该xsd文件多定义了一行默认的xmlSc

关于Spring配置文件xml文档的schema约束

最开始使用spring框架的时候,对于其配置文件xml,只是网上得知其使用方法,而不明其意.最近想着寻根问底的探究一下.以下是本文主要内容: 1.配置文件示例. [html] view plain copy print? <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:m

Spring中xml文档的schema约束

最开始使用Spring框架的时候,对于其配置文件xml,只是网上得知其使用方法,而不明其意.最近想着寻根问底的探究一下.以下是本文主要内容: 1.配置文件示例. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springfram

XML的DTD和Schema约束

为什么要使用约束? XML是自定义的标签,有时候标签太多,记不住,所以就需要有约束来告诉我能写哪些标签,哪些标签写错了不能识别 XML中有哪几种约束? 有很多约束,其中DTD和Schema约束最为常见. 约束本质上是什么? 约束本质上也是一种xml文件. DTD约束和Schema约束的区别 特点的区别: DTD约束较为古老,简单,一些老框架使用DTD作为约束:Struts2和Hibernate都使用DTD作为其XML配置文件的约束 Schema约束功能更为强大,用的更为广泛,Tomcat和Spr

xml初步,DTD和Schema约束

XML 可扩展的标记语言(!!!可扩展) 作用 1.存放数据 2.配置文件 语法 文档声明 <?xml version="1.0" encoding="UTF-8"?> 1.文档声明必须为<?xml开头,以?>结束: 2.文档声明必须从文档的0行0列位置开始: 3.文档声明只有2个属性: version 版本 encoding 编码 元素 <bean></bean> 1.必须开始结束 2.标签由开始标签,元素体,结束标

XML Schema约束

schema规范中:    1. namespace : schema文件的标识属性,相当于id,每个schema文件需要有一个唯一的namespace值:    2. targetNameSpace :指定当前schema文件的namespace值,它的值是一个url(很有可能不存在):    3. xmlns :引入一个schema约束,它的值为一个schema的namespace值            属性? : 用xmlns属性            属性值: 对应的schema文件的