`

elementFormDefault的作用

    博客分类:
  • XML
 
阅读更多

一个 XML schema 中 elementFormDefault="?" 这一属性用来指示 XML Schema 处理程序把这个 XML schema 中定义的元素或者类型放到哪个命名空间。

 

一个schema中声明的元素或者类型只能归到两个命名空间中的某一个去,这两个是,无名命名空间和由targetSchema属性指明的目标命名空间。而targetSchema属性只能在xs:schema的定义中声明,因而,一个schema中的定义的元素或类型只可能归属于一个有名命名空间(但是还有可能归属于无名命名空间)。

当elementFormDefault="qualified" 时,所有全局元素的子元素将被以缺省方式放到目标命名空间,但是全局元素或者类型将被放到目标命名空间;而当elementFormDefault="unqualified" 时,所有全局元素的子元素将被以缺省方式放到无名命名空间。而属性的命名空间类似地由attributeFormDefault="?"来指明。

需要明白的是,elementFormDefault="?" 是有作用域的,并且是被继承的,除非在子定义中覆盖父定义。

下面三个例子说明了elementFormDefault的使用效果。红色表示属于已命名空间的元素,蓝色表示属于未命名空间的元素。下面以图解的方式来说明:


这里的全局元素指 "schema" 元素的直接子元素!本地元素(Local elements)指嵌套在其他元素中的元素。

 

1.定义了目标命名空间, 全局elementFormDefault=“unqualified”。这时除了全局元素或者类型将归于目标命名空间外,局部元素将归于无名命名空间。

unqualified.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="aaaa" elementFormDefault="unqualified" attributeFormDefault="unqualified">
<xs:element name="c">
   <xs:complexType>
    <xs:sequence>
     <xs:element name="c1" type="xs:double"/>
     <xs:element name="c2" type="xs:string"/>
    </xs:sequence>
   </xs:complexType>
</xs:element>
</xs:schema>

unqualified.xml

<?xml version="1.0" encoding="UTF-8"?>
<n:c xmlns:n="aaaa" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="aaaa unqualified.xsd">
<c1>3.141593E0</c1>
<c2>String</c2>
</n:c>

2. 定义了目标命名空间, 全局elementFormDefault=“qualified”。这时全局元素或者类型将归于目标命名空间,局部元素将以缺省方式归于目标命名空间。

qualified.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="aaaa" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="c">
   <xs:complexType>
    <xs:sequence>
     <xs:element name="c1" type="xs:double"/>
     <xs:element name="c2" type="xs:string"/>
    </xs:sequence>
   </xs:complexType>
</xs:element>
</xs:schema>

qualified.xml

<?xml version="1.0" encoding="UTF-8"?>
<c xmlns="aaaa" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="aaaa qualified.xsd">
<c1>3.141593E0</c1>
<c2>String</c2>
</c>

3. 定义了目标命名空间, 全局elementFormDefault=“unqualified”。这时全局元素(c)或者类型将归于目标命名空间。局部元素(c1,c2)以缺省方式归于无名命名空间。局部元素(c3)在局部定义中使用form=“qualified”覆盖全局设定的unqualified,这使得c3归于目标命名空间(如果它有子元素,子元素将以缺省方式归于目标命名空间)。

qualified2.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="aaaa" elementFormDefault="unqualified" attributeFormDefault="unqualified">
<xs:element name="c">
   <xs:complexType>
    <xs:sequence>
     <xs:element name="c1" type="xs:double"/>
     <xs:element name="c2" type="xs:string"/>
     <xs:element name="c3" type="xs:integer" form="qualified"/>
    </xs:sequence>
   </xs:complexType>
</xs:element>
</xs:schema>


qualified2.xml

<?xml version="1.0" encoding="UTF-8"?>
<n:c xmlns:n="aaaa" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="aaaa qualified2.xsd">
<c1>3.141593E0</c1>
<c2>String</c2>
<n:c3>0</n:c3>
</n:c>

分享到:
评论

相关推荐

    浅谈XML Schema中的elementFormDefault属性

    在XML Schema中,elementFormDefault是一个非常重要的属性,它与元素是否需要使用限定名(即带命名空间的前缀)息息相关。在XML Schema定义中,elementFormDefault属性有两个可选的值:qualified和unqualified。下面...

    CXF webservice 实现简单的HelloWorld

    CXF webservice 入门视频 很清晰很不错,企业当中很多都在使用CXF

    XML应用开发(软件品牌)-1期 3.12 案例分析-限定目标命名空间.doc

    在这个例子中,`elementFormDefault="unqualified"`和`attributeFormDefault="unqualified"`使得根元素`Book`被限定在目标命名空间,但其子元素`BookID`和`BookName`以及属性`Classfication`不受目标命名空间的约束...

    WSDL 文件及其属性

    本篇文章将深入探讨WSDL文件的几个关键属性,包括`elementFormDefault`、style/use组合以及指定SoapAction的方式。 首先,我们来看`elementFormDefault`属性。这个属性决定了XML实例文档中元素的命名空间处理方式。...

    XML应用开发(软件品牌)-1期 3.12 课堂实践-限定目标命名空间.doc

    任务一:当`elementFormDefault`和`attributeFormDefault`都为`unqualified`时,创建的XML Schema文档(XSD)中,`Employee`、`FirstName`、`LastName`元素以及`EmpID`属性都不属于目标命名空间。然后,编写相应的...

    day023-xml解析笔记和代码.rar

    targetNamespace="http://itsource.cn" elementFormDefault="qualified"&gt; ...

    理解XML Schema XML Schema进阶

    局部元素和属性的限定可以通过schema元素的一对属性,elementFormDefault和attributeFormDefault来实现的。这些属性可以被设为"unqualified"或者"qualified",来指出局部声明的元素和属性是否必须为无限制的。 4. ...

    对XML字段进行约束 SQL server 2005

    - `elementFormDefault="qualified"`表示元素默认为限定。 - `&lt;xs:element&gt;`标签定义了元素`Person`。 - `&lt;xs:complexType&gt;`标签定义了`Person`元素的数据类型。 - `&lt;xs:sequence&gt;`标签表示子元素按顺序出现。 - `...

    XML文档.doc

    通过对这个学生成绩表XML文档的分析,我们不仅了解了XML文档的基本构成,还深入理解了DTD、XML实例、XSL以及XML Schema的作用和意义。XML作为一种强大的数据交换和存储格式,结合DTD和XML Schema提供了严格的结构...

    JAXB注解命名空间使用到的jar包

    你可以通过`@XmlSchema`注解来设置命名空间,如`@XmlSchema(namespace = "http://example.com/ns", elementFormDefault = XmlNsForm.QUALIFIED)`,其中`namespace`属性定义了命名空间URI,`elementFormDefault`指定...

    XML_SCHEMA教程

    - **作用**:XSD允许用户精确地定义XML文档的结构,包括元素、属性的类型以及它们之间的关系。这种定义方式不仅可以确保XML文档符合预设的结构规范,还能进一步规定各个元素的数据类型,确保数据的有效性和准确性。 ...

    WEB服务描述语言.docx

    3. 掌握WSDL文档元素的作用。 实例: xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime=...

    XML学习笔记

    -- elementFormDefault: unqualified (默认情况下所有元素都是未限定的), qualified (所有元素都限定于命名空间内) --&gt; ``` - **elementFormDefault**: 指定了该Schema中的元素是否默认限定到命名...

    wasabi:一个简单的WSDL解析器

    namespace# =&gt; "http://v1.example.com" 检查elementFormDefault是否设置为:qualified或:unqualified : document . element_form_default# =&gt; :qualified 获取可用的SOAP操作的列表(为方便起见,使用snakecase)...

    accept方法源码java-peretesan.:此XML文件似乎没有与之关联的任何样式信息。文档树如下所示。元素或声明一个TilesCon

    elementFormDefault u201c qualified” attributeFormDefault =“ unqualified”&gt; namespace =“” schemaLocation u201c namespace =”“ schemaLocation u201d name =“ annotation-driven”&gt; source =“ ...

    W3CXML架构设计模式:避免复杂性

    目录简介指导方针为何应该使用全局和局部元素声明为何应该使用全局和局部属性声明为何应该了解XML命名空间对W3CXML架构的影响为何应该始终将elementFormDefault设置为“qualified”为何应该使用属性组为何应该使用...

    .NET Framework中的XML序列化

    &lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:xmlns:25hoursaday-com:my-bookshelf" xmlns:bk="urn:xmlns:25hoursaday-com:my-bookshelf" elementFormDefault="qualified"&gt; ...

    XSD学习笔记

    #### XML Schema Definition (XSD) 的基本概念与作用 XML Schema Definition (XSD) 是一种用于定义 XML 文档结构的语言。它主要用于描述 XML 文档中的元素、属性及其数据类型,帮助确保 XML 数据的一致性和正确性。...

Global site tag (gtag.js) - Google Analytics