XML学习之Xml Schema:五、复杂类型–Attribute

  • Post author:
  • Post category:其他


一个元素如有属性或者包含子元素,那么这个元素就是复杂类型。复杂类型使用xs:complexType定义。复杂类型要么具有简单内容,要么具有复杂内容。内容是指在开始标签和结束标签之间的字符数据和子元素。


简单内容是指内容只具有字符数据没有子元素,简单内容是用xs:simpleContent元素来定义(简单内容要有属性,否则等同于简单类型)。


除此之外的就是复杂内容,使用xs:complexContent来定义。

xs:attribute元素的use、default、fixed属性

use属性指示xs:attribute元素是否需要出现,其有效值为:optional(表明xs:attribute元素是可选的,use属性的默认值)、prohibited(禁止使用属性)、required(属性是必须的)。对全局声明的属性不能使用use属性。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="Book">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="isbn" use="required"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
</xs:schema>

局部元素isbn可以使用use属性

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="Book">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute ref="isbn"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:attribute name="isbn"/>
</xs:schema>

全局元素isbn中不能使用use属性

default属性指示默认值。属性默认值是有在属性本身为optional时才有意义。如果没有指定该属性的值,那么该值为默认值。如果指定了,则是指定值。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="document">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="Format" default="PDF"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
</xs:schema>

Fixed属性指示固定值。不管该属性出现不出现,该属性的值都是PDF。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="document">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="Format" fixed="PDF"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
</xs:schema>



版权声明:本文为tuolingss原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。