`

XML:elementFormDefault的用法

阅读更多

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

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

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

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

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

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

unqualified.xsd

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

unqualified.xml

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

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

qualified.xsd

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

qualified.xml

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

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

qualified2.xsd

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


qualified2.xml

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

分享到:
评论

相关推荐

    理解XML Schema XML Schema进阶

    XML Schema是目前国际标准的XML建模工具,本文将对XML Schema进行详细的介绍,帮助读者初步掌握XML Schema的使用方法和XML Schema文档实例的具体语义。 1. 命名空间的使用 XML Schema中命名空间的使用是非常重要的...

    XML生成XSD的方法

    ### XML生成XSD的方法 #### 一、引言 在处理结构化数据时,XML(可扩展标记语言)因其灵活性而被广泛采用。为了确保XML文档遵循特定的格式和规则,通常会用到XSD(XML Schema Definition)来定义XML文档的结构。...

    Java通过XML Schema校验XML

    在本例中,作者选择使用DOM4j库来进行XML的解析与校验,并且结合了javax.xml.parsers包中的SAXParser来实现XML与XSD之间的校验。这种方法相对直观且易于理解。 #### 示例代码详解 首先,我们来看一下示例中给出的...

    XML文档.doc

    从给定的XML文档及其描述、标签和部分内容中,我们可以提炼出关于XML(可扩展标记语言)的关键知识点,包括DTD(文档类型定义)、XML实例、XSL(可扩展样式表语言)以及XML Schema的使用。 ### XML与DTD 在XML文档...

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

    dom4j中使用到的方法: 1.创建SaxReader对象 SAXReader reader = new SAXReader(); 2.设置命名空间 reader.getDocumentFactory().setXPathNamespaceURIs(map); 3. SAXReader对象调用...

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

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

    java对象生成xml数据

    接着,使用`marshal`方法将`myObject`转换为XML并写入到`StringWriter`,最后得到的`xmlString`就是格式化的XML字符串。 在实际开发中,你可能需要处理更复杂的场景,比如处理嵌套的对象或集合。JAXB能够自动处理...

    XML学习笔记

    ### XML学习笔记 #### 一、XML基础知识 ...以上是关于XML Schema 的基本介绍及其主要元素的使用方法,通过这些基本概念的学习,我们可以更好地理解和使用XML Schema 来验证XML文档的结构和内容。

    XML_SCHEMA教程

    它是一种更强大、更灵活的文档类型定义方法,用来替代传统的DTD(Document Type Definition)。通常情况下,我们将XML Schema简称为XSD(XML Schema Definition)。 - **作用**:XSD允许用户精确地定义XML文档的...

    XML schema教程

    **DTD** (文档类型定义) 是一种早期用于定义 XML 文档结构的方法。例如,下面的 DTD 定义了 `note` 元素必须包含哪些子元素: ```xml &lt;!ELEMENT note (to, from, heading, body)&gt; &lt;!ELEMENT to (#PCDATA)&gt; &lt;!ELEMENT...

    WEB服务描述语言.docx

    WSDL(Web Service Description Language)是一种基于XML的语言,用于描述WEB服务接口方法、调用方法所使用的协议、方法的参数以及参数的数据类型等内容。WSDL文档中包含了访问WEB服务需要的所有数据。 WSDL的概念...

    XSD学习笔记

    ### XSD学习笔记 #### XML Schema Definition (XSD) 的基本概念与作用 XML Schema Definition (XSD) 是一种用于定义 XML 文档...对于需要处理大量 XML 数据的应用程序来说,熟练掌握 XSD 的使用方法是非常重要的。

    xsd的基本定义

    XSD(XML Schema Definition)是XML的一个重要标准,用于定义XML文档的结构和数据类型。...对于XML的使用者和开发者来说,掌握XSD的基本定义和用法是至关重要的,它能够极大地提高XML文档的可靠性和一致性。

    spring自定义标签

    `MyCustomTagBeanDefinitionParser`需要实现`org.springframework.beans.factory.xml.BeanDefinitionParser`接口,其`parse`方法用于解析XML标签,并创建对应的BeanDefinition: ```java public class ...

    使用CXF发布和调用webservice之HelloWorld入门

    &lt;xsd:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://interfaces.cxf.com/" xmlns:tns="http://interfaces.cxf.com/" xmlns:xsd=...

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

    当你有一个Java对象,你可以使用`jaxb.marshal()`方法将其转换为XML文档;反之,通过`jaxb.unmarshal()`,你可以将XML解析为Java对象。这种转换过程极大地提高了开发效率和代码的可读性。 在XML中,命名空间...

    用eclipse创建webservice.doc

    &lt;schema elementFormDefault="qualified" targetNamespace="http://service.shi.com" xmlns="http://www.w3.org/2001/XMLSchema"&gt; &lt;element name="name" type="xsd:string"/&gt; ...

    WSDL 文件及其属性

    当`elementFormDefault`设置为`qualified`时,这意味着XML实例文档中的根元素及其所有子元素都需要使用命名空间前缀来限定它们属于的目标命名空间,这个命名空间必须与Schema中定义的`targetNamespace`相匹配。...

Global site tag (gtag.js) - Google Analytics