Schema 快速入门

schema规范中:

  1. 所有的标签和属性都要有schema文件来定义
  2. 所有的schema文件都要有一个id,即namespace
  3. namespace的值由targetNamespace属性来决定,是一个url(很可能不存在)
  4. 如何引入一个schema:xmlns="(namespace值)"
  5. 如果引入的schema不是w3c组织定义,必须指定schema文件位置
  6. schema文件在什么位置由schemaLocation属性决定:schemaLocation="(namespace + 文件位置)"
  7. 如果引入了n个约束,至少要给n-1个取别名

定义schema:book.xsd

<xml version="1.0" encoding="UTF-8">
<schema xmlns="http://www.w3.org/2001/XMLSchema" 
	targetNamespace="http://www.wangteng.com/bookSchema"
	elementDefault="qualified"
>
	<elemment name="书架">
		<complexType>
			<sequence maxOccurs="unbounded"> 
				<element name="书">
					<complexType>
						<sequence maxOccurs="unbounded">
							<element name="书名" type="string" />
							<element name="作者" type="string" />
							<element name="定价" type="string" />
						</sequence>
					</complexType>
				</element>
			</sequence>
		</complexType>
	</element>
</schema>

引入定义的schema:

<xml version="1.0" encoding="UTF-8">
<书架 xmlns="http://www.wangteng.com/bookSchema"
	xmlns:wang="http://www.w3.org/2001/XMLSchema-instance"
	wang:schemaLocation="http://www.wangteng.com/bookSchema book.xsd"
>
	<书>
		<书名>托勒密门扉<书名>
		<作者>(英)乔纳森·史特劳 <作者>
		<定价>32.80<定价>
	</书>

</书架>

取别名:
schemaLocation 属性由 "http://www.w3.org/2001/XMLSchema-instance" 这个约束文档来定义,所以要引入 xmlns="http://www.w3.org/2001/XMLSchema-instance",因为这个引入要区别于别的引入,所以起别名xmlns:wang="http://www.w3.org/2001/XMLSchema-instance",因为定义schemaLocation属性的文档起了别名,所以schemaLocation也要带上别名wang:schemaLocation=
如果xmlns="http://www.wangteng.com/bookSchema" 起别名改为 xmlns:teng="http://www.wangteng.com/bookSchema",那么由"http://www.wangteng.com/bookSchema"所定义的标签也要加上别名,如<书架> 改为 <teng:书架><书> 改为 <teng:书>

几个重要属性:

  1. namespace:相当于schema文件的id
  2. targetNamespace:用来指定schema文件的namespace的值
  3. xmlns:引入一个约束,它的值是一个schema文件的namespace值
  4. schemaLocation:用来指定引入的schema文件的位置
上一篇:android:showAsAction报错的解决办法


下一篇:新开始做wpf,随便写点经验