浅谈XML Schema中的elementFormDefault属性

XML教程 2025-08-02

elementFormDefault属性与命名空间相关,其值可设置为qualified或unqualified

如果设置为qualified:

在XML文档中使用局部元素时,必须使用限定短名作为前缀

sean.xsd:

xml version="1.0" encoding="UTF-8"
xs:schema xmlns:xs="http://www.***w3.org/2001/XMLSchema"
 xmlns:sean="http://s*e**an.com"
 targetNamespace="http://s*e**an.com"
 elementFormDefault="qualified"
 xs:element name="book_list"
 xs:complexType
 xs:sequence
 xs:element name="book" type="xs:string"/
 /xs:sequence
 /xs:complexType
 /xs:element
/xs:schema

sean.xml:

xml version="1.0" encoding="UTF-8"
sean:book_list xmlns:sean="http://s*e**an.com" 
 xmlns:xsi="http://www.***w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://s*e**an.com sean.xsd"
 sean:booktest/sean:book
/sean:book_list

如果设置为unqualified:

在XML文档中使用局部元素时,可以省略限定短名

sean.xsd:

xml version="1.0" encoding="UTF-8"
xs:schema xmlns:xs="http://www.***w3.org/2001/XMLSchema"
 xmlns:sean="http://s*e**an.com"
 targetNamespace="http://s*e**an.com"
 elementFormDefault="unqualified"
 xs:element name="book_list"
 xs:complexType
 xs:sequence
 xs:element name="book" type="xs:string"/
 /xs:sequence
 /xs:complexType
 /xs:element
/xs:schema

sean.xml:

xml version="1.0" encoding="UTF-8"
sean:book_list xmlns:sean="http://s*e**an.com" 
 xmlns:xsi="http://www.***w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://s*e**an.com sean.xsd"
 booktest/book
/sean:book_list

虽然会间接很多,但是由于去掉了命名空间,所以不是很好理解

类似的属性还有attributeFormDefault,其规则与elementFormDefault是一样的