关闭

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

2856人阅读 评论(0) 收藏 举报

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>



   
0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:75345次
    • 积分:1261
    • 等级:
    • 排名:千里之外
    • 原创:54篇
    • 转载:3篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档