学习笔记——XML Schema定义元素

原创 2012年03月26日 10:05:38

Schema使用<element..,/>定义元素。

 

元素类型分类:

普通元素、空元素类型、混合内容类型。

 

空元素类型用于定义元素内容为空(null)的元素。

Schema提供了两种定义空元素类型的方式:

1:扩展长度为0的字符串;

2:限制anyType,Schema推荐方法。

 

混合内容类型的定义,只需在<complexType.../>元素中增加mixed="true"即可。

 

<element.../>的常用属性:

name:元素名;

type:元素类型;

fixed:指定一个固定值;

default:指定一个默认值;

abstract:指定该属性为抽象元素。

ref:引用一个以有的全局元素,不能和name、type属性同时出现;

minOccurs:只能在定义子元素才能使用,表示最少出现次数;

maxOccurs:只能在定义子元素才能使用,表示最大出现次数,当maxOccurs="unbounded"时表示无限个;

nillable:指定是否可以将显式的零值(值是null的占位符)分配给该元素内容。使用方法:当定义元素类型时指定nillable="true",则可在使用该元素时指定nil="true"。nil在"http://www.w3.org/2001/XMLSchema-instance"命名空间中。

 

Schema定义元素的两种方式:

1:全局元素:

2:局部元素:即子元素。

 

Schema为定义子元素提供了如下3个元素:

1:<sequence.../>:该元素包含的所有子元素出现顺序与定义顺序必须保持一致;

2:<choice.../>:该元素包含的所有子元素只能出现其中之一;

3:<all.../>:该元素包含的子元素可以任意次序出现。


使用<all.../>的注意事项:

1:其包含的子元素布恩那个重复出现;

2:不能与<sequence.../>和<choice.../>同时出现。

 

<sequence.../>和<choice.../>还可以互相嵌套使用。

 

Schema也提供了对元素组的支持,其使用<group.../>来定义和使用元素组

 

定义元素组时其可选的子元素有:

<sequence.../>:有序元素;

<choice.../>:互斥元素;

<all.../>:无序元素;

 

使用时只需在<group.../>元素中使用ref属性即可。

 

示例:

 

test.xsd

 

<?xml version="1.0" encoding="GBK"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<!-- 定义全局元素 -->
	<xs:element name="global" type="xs:string"/>
	<xs:element name="global2" type="xs:string"/>

	<!-- 定义一个包含子元素的元素 -->
	<xs:element name="local">
		<!-- 定义元素类型 -->
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="global" minOccurs="2" maxOccurs="unbounded"/>
				<xs:element ref="global2" nillable="true"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>

 

test.xml

 

<?xml version="1.0" encoding="GBK"?>
<local xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:noNamespaceSchemaLocation="test.xsd">
	<global>one</global>
	<global>two</global>
	<global2 xsi:nil="true"/>
</local>

 

空元素示例:

 

<?xml version="1.0" encoding="GBK"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<!-- 定义一个长度为0的字符串 -->
	<xs:simpleType name="emptyString">
		<xs:restriction base="xs:string">
			<xs:maxLength value="0"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:element name="name">
		<!-- 定义元素类型 -->
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="emptyString">
					<xs:attribute name="first" type="xs:token"/>
					<xs:attribute name="last" type="xs:token"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
</xs:schema>

 

<?xml version="1.0" encoding="GBK"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="name">
		<!-- 定义元素类型 -->
		<xs:complexType>
			<xs:attribute name="first" type="xs:token"/>
			<xs:attribute name="last" type="xs:token"/>			
		</xs:complexType>
	</xs:element>
</xs:schema>

 

混合元素示例:

 

<?xml version="1.0" encoding="GBK"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="name">
		<!-- 定义元素类型 -->
		<xs:complexType mixed="true">
			<xs:sequence>
				<xs:element name="element1" type="xs:string"/>
				<xs:element name="element2" type="xs:decimal"/>
			</xs:sequence>

			<xs:attribute name="first" type="xs:token"/>
			<xs:attribute name="last" type="xs:token"/>			
		</xs:complexType>
	</xs:element>
</xs:schema>



                    

Xml学习笔记:(一)schema元素类型

一、注释元素1、xsd:annotation xsd:annotation包含两个子元素xsd:documention和xsd:appinfo,这两个元素是schema中唯一的混合元素类型,可以包含任...

XML Schema学习教程(二)-元素属性的定义与约束

XSD Simple Elements [XSD的简单元素]翻译:linqingfeng 英语原文: http://www.w3schools.com/schema/default.asp XM...

数据模式(Schema)定义

数据模式(Schema)定义 Created 星期一 24 十月 2016 模式(Schema)定义了一个多维数据库,它包一个含逻辑模型,并定义了逻辑模型到物理模型的映射。物理模型包含多维数据的...
  • xbynet
  • xbynet
  • 2016年10月25日 09:58
  • 1172

XML和Schema命名空间详解

XML和Schema具有无关平台,技术厂商,简单,规范统一等特点,极具开放性,所以使用极为广泛,而且使用简单,在XML和Schema和,个人认为比较不好理解的一点是其命名空间问题,在这篇博客里详细进行...

XML------XML文档类型定义(Schema结构)

XML Schema结构                                                                                        ...

C#自定义控件属性与行为

控件应该定义属性而不是公共字段,因为可视化设计器在属性浏览器中显示属性,而不显示字段。属性就像智能字段。属性通常具有带访问函数的专用数据成员,在语法上属性被作为类的字段进行访问。(虽然属性可以具有不同...

通过PropertyDescriptor反射获取属性的 getter/setter 方法

Java类中的私有的(private)属性是获取不到的(即使使用继承依然获取不到),那如果非要获取私有属性的值怎么办呢?一般的做法是将该java类封装称为一个JavaBean,即封装该私有属性,提供一...

学习笔记——XML Schema自定义简单数据类型

XML Schema规范共推荐12种约束。 范围约束 minInclusice、manInclusice、minExclusive、maxExcusive 长度约...

[XML]学习笔记(五)——XML Schema简单类型元素与属性

一、XML Schema简介: a)        XML Schema 是基于XML的DTD替代者。 b)        XML Schema 可描述XML文档的结构。 c)        XML ...

学习笔记——XML Schema自定义数据类型(续)

阻止派生新的简单类型   Schema通过使用元素的可选final属性和的finalDefault属性的值来限制派生新的类型。 final和finalDefault可接受如下值: 1:#all...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习笔记——XML Schema定义元素
举报原因:
原因补充:

(最多只允许输入30个字)