XSD中schema元素elementFormDefault属性说明

        在上一篇文章《XSD简介》中,列举了一个简单的XSD的例子。其中,xs:schema元素有一个elementFormDefault属性,关于此属性的作用,很多人都不是很清楚。

        schema中定义的元素或者类型会放到命名空间中去,而命名空间是通过targetNamespace属性来定义的,又因为只有schema元素有targetNamespace属性,所以schema中定义的元素或者类型只能放到targetNamespace元素指定的命名空间或者无名命名空间中。 而schema元素中的elementFormDefault属性,其作用就是决定schema中定义的元素或类型放到哪个命名空间中,可选值有两个:qualified和unqualified。

        当elementFormDefault为qualified时,全局元素及其所有子元素或类型都会被放到targetNamespace指定的命名空间中。

        copy.xsd

<?xml version="1.0" encoding="UTF8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
	targetNamespace="my.xsd.ns"
	xmlns="my.xsd.ns"
	elementFormDefault="qualified" >
	<xs:element name="copy">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="from" type="xs:string"/>
				<xs:element name="to" type="xs:string" />
				<xs:element name="force" type="xs:boolean" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>
        copy.xml有两种写法:

<?xml version="1.0" encoding="UTF8"?>

<n:copy xmlns:n="my.xsd.ns"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="my.xsd.ns copy.xsd" >
	<from>D:\\test</from>
	<n:to>E:\\document</n:to>
	<n:force>true</n:force>
</n:copy>

<?xml version="1.0" encoding="UTF8"?>

<copy xmlns="my.xsd.ns"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="my.xsd.ns copy.xsd" >
	<from>D:\\test</from>
	<to>E:\\document</to>
	<force>true</force>
</copy>
        当elementFormDefault为unqualified(默认值)时,不需要设置targetNamespace属性,所有的元素或类型都会被放到无名命名空间中。
        copy.xsd

<?xml version="1.0" encoding="UTF8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="copy">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="from" type="xs:string" />
				<xs:element name="to" type="xs:string" />
				<xs:element name="force" type="xs:boolean" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>
        copy.xml

<?xml version="1.0" encoding="UTF8"?>

<copy 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="my.xsd.ns ../copy.xsd" >
	<from>D:\\test</from>
	<to>E:\\document</to> 
	<force>true</force>
</copy>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值