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

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>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值