`
marb
  • 浏览: 422540 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Schema中elementFormDefault="qualified"所起的作用

阅读更多

有的xsd文件的开头是这样写的:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.abc.com"
           xmlns:ps="http://www.abc.com"
           elementFormDefault="qualified">

可是去掉elementFormDefault="qualified"好象也没什么影响呀?

 

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

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

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

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

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

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属性

    当elementFormDefault属性被设置为qualified时,表示所有的局部元素(即在当前schema中定义的元素)都必须使用限定名(qualified name,简称QName),也就是前面要加上命名空间的前缀。这种方式的优势在于它可以避免...

    对XML字段进行约束 SQL server 2005

    在SQL Server 2005中,为了确保存储在数据库中的XML数据的完整性与一致性,可以使用XML Schema来对XML字段进行约束。本篇将详细解释如何创建支持XML Schema约束的表、定义XML Schema以及如何在SQL Server 2005中使用...

    java中实现xmlschema验证文件借鉴.pdf

    8. **Qualified Elements**: 在XSD中,`elementFormDefault="qualified"`意味着所有元素都应该有命名空间前缀,就像XML文档中的`my:students`, `my:student`, `my:name` 和 `my:age`。 9. **Data Types**: XSD支持...

    schema学习笔记

    - **骆驼式命名法**:在Schema中,大多数关键字采用了骆驼式命名法,即由一个或多个单词组成,第一个单词首字母小写,后续每个单词首字母大写。例如,`elementName`。 #### 数据类型 - **String**:最基本的文本...

    理解XML Schema XML Schema进阶

    XML Schema中命名空间的使用是非常重要的,命名空间可以使我们能够从不同的词汇表中区分定义以及声明。目标命名空间使我们能够区分在XML Schema语言词汇表中的元素声明和在一个其他的假定的化学语言词汇表中的元素...

    XML_SCHEMA教程

    XML_SCHEMA教程详解 XML Schema,简称XSD,是W3C...XML Schema是XML开发中的重要工具,对于保证XML数据的准确性和一致性有着不可或缺的作用。理解和掌握XML Schema,有助于开发者创建出更加健壮和可靠的XML应用程序。

    Java通过XML Schema校验XML

    elementFormDefault="qualified"&gt; &lt;xs:element name="note"&gt; &lt;xs:element name="to" type="xs:string"/&gt; &lt;xs:element name="from" type="xs:string"/&gt; &lt;xs:element name="heading" type="xs:string"/&gt; ...

    XML学习 练习SCHEMA

    7. **模式继承与约束**:通过使用`elementFormDefault`和`attributeFormDefault`,可以控制元素和属性是否默认为限定(qualified)状态,即是否需要携带命名空间前缀。 8. **组与模式片段**:可以创建元素或属性的...

    XML schema教程

    elementFormDefault="qualified"&gt; &lt;xs:element name="note"&gt; &lt;xs:element name="to" type="xs:string"/&gt; &lt;xs:element name="from" type="xs:string"/&gt; &lt;xs:element name="heading" type="xs:string"/&gt; ...

    spring自定义标签

    elementFormDefault="qualified"&gt; &lt;xs:element name="myCustomTag" type="myCustomTagType"/&gt; &lt;xs:complexType name="myCustomTagType"&gt; &lt;xs:attribute name="attr1" type="xs:string" use="required"/&gt; ...

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

    在XML Schema中,`elementFormDefault`和`attributeFormDefault`属性用于控制元素和属性是否需要限定在目标命名空间内。当`elementFormDefault`为`unqualified`时,全局声明的元素不会自动包含在目标命名空间内,而...

    第一次实验1

    elementFormDefault="qualified"&gt; &lt;xs:element name="school"&gt; &lt;xs:element name="grade"&gt; &lt;xs:element name="class"&gt; &lt;xs:element name="student"&gt; &lt;xs:element name="studentId" type="xs:...

    spring 自定义xsd

    elementFormDefault="qualified"&gt; &lt;xs:element name="myBean"&gt; &lt;xs:attribute name="customName" type="xs:string" use="required"/&gt; &lt;xs:attribute name="customProperty" type="xs:string"/&gt; &lt;/xs:...

    WEB服务描述语言.docx

    &lt;s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/"&gt; &lt;s:element name="HelloWorld"&gt; &lt;s:element name="HelloWorldResponse"&gt; &lt;s:element minOccurs="0" maxOccurs="1" name=...

    XML文档.doc

    通过使用`elementFormDefault="qualified"`和`attributeFormDefault="unqualified"`,Schema指定了元素和属性的默认形式。这有助于确保XML数据的一致性和正确性,是现代XML应用中的重要组成部分。 ### 结论 通过对...

    .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; ...

    JAXB Demo及namespace的prefix自定义解决方案

    @XmlSchema(namespace = "http://example.com/schema", elementFormDefault = XmlNsForm.QUALIFIED, namespacePrefixMapper = MyNamespacePrefixMapper.class) @XmlJavaTypeAdapters({...}) // 如果有类型适配器的话...

    利用java反射模拟struts2工作.doc

    &lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.myblogs.org" elementFormDefault="qualified" targetNamespace="http://www.myblogs.org"&gt; &lt;!-- 元素定义 --&gt; ... ... ...

Global site tag (gtag.js) - Google Analytics