`

Schema验证XML概念

阅读更多
1.Schema 文件的结构
Schema文件和其它XML文件的样子非常相似,它是由一组元素构成的,其根元素是“Schema”。“Schema”元素是XML Schema中第一个出现的元素,用于表明该XML文档是一个Schema文档,相应的,“Schema”的结束标记一般在文档的末尾。这样,一个Schema的结构如下:

<Schema name="schema-name" xmlns="namespace" >

</Schema> 
Schema具有两个属性:name指定该Schema的名称,而xmlns则指定该Schema包含的命名空间。注意,一个XML Schema文档中可以包含多个命名空间,比如下面的语句指定了三个命名空间:

<Schema name="mySchema" 
        xmlns
="urn:schemas-microsoft-com:xml-data"
        xmlns:dt
="urn:schemas-microsoft-com:datatypes" xmlns:myNS=http://www.xml_step_by_step.edu\ns.xml
> 

第一个是xmlns="urn:schemas-microsoft-com:xml-data",它指定本文档是一个XML Schema文档;第二个是xmlns:dt="urn:schemas-microsoft-com:datatypes",它定义了在本文档中可以使用的数据类型;第三个是xmlns:myNS="http://www.xml_step_by_step.edu\ns.xml",它表明下面可能会用到在myNS中定义的元素或属性。

2.用Schema定义元素及其内容
在讲述Schema中和ETD定义相对应的种种定义方法之前,我们先来看看所涉及的三个Schema元素:ElementType、element、group。
     1.ElementType元素
     在Schema文档中使用ElementType来声明XML文件中会出现的元素,ElementType的语法表达如下: 

<ElementType 
    
name="元素名" 
    content
="{ empty | textOnly | eltOnly | mixed }" 
    dt:type
="元素类型" 
    order
="{ one | seq | many }" 
    model
="{ open | closed }" 
> 

在ElementType的几个属性中,name的含义不言而喻,是所声明元素的名称,它是不可缺少的。content是ElementType的一个重要属性,它指明ElementType所声明的元素是否为空、是否包含文本、是否包含子元素、还是既包含文本又包含子元素。dt:type指定该元素的数据类型。order指定该元素的子元素的排列顺序规则。最后,model指定该元素是否可以包含未在本Schema中定义的元素和属性,它主要用于其它Schema的引入,也就是其它“命名空间”的引入。“命名空间”的概念大家可能还比较生疏,现在你只要了解,在一个XML文件中能够同时使用几个不同的DTD或Schema定义。
下表列出了model可能的取值:

取 值

释  意

open 表明该元素可以包含其它未在XML Schema中定义的元素和属性
closed 表明该元素只能包含在本XML Schema中定义过的元素和属性

缺省状态下,XML Schema的model取值"open",也就是说,该元素可以包含其它未在XML Schema中定义的元素和属性。但是,这并不意味着任何元素和属性都可在Schema中出现,允许出现的前提是这些"异类"元素和属性必须在单独的XML Schema中加以定义,并且必须在引用的它们的元素中以命名空间形式指定其出处。
      2. element元素 
       ElementType只是起到声明元素的作用,至于元素的内容究竟是什么,则要靠它的子元素element来说明。element的语法表达如下:  

<element 
    
type="元素类型" 
    [minOccurs
="{ 0 | 1 }"
    [maxOccurs
="{ 1 | * }"
> 

element实际上是对该Schema中ElementType声明的引用,而具体引用什么元素类型,就要靠type属性指定了。type属性不可缺少,并且为了保证type指定的是已经声明过的元素,要求它的取值必须同某个ElementType中的name属性严格一致。至于其它两个属性倒是可有可无。minOccurs指定该元素在其父元素中出现的最小次数,缺省值为1,表明该元素至少出现一次;也可以取值为0,表明该元素是可选的,可以不出现。maxOccurs则指定了该元素出现的最大次数,缺省值同样为1,表明该元素至多出现一次;也可取值为“*”,表明该元素在XML实例文档中出现次数不受限制。

    3.group元素 
   DTD中有成组的概念,相应的,Schema中也有“group”元素。它的语法表达类似element元素:

<group
    order="{one | seq | many}"
    [minOccurs="{ 0 | 1 }"]
    [maxOccurs="{ 1 | * }"]
>

和DTD的规定相同,组里的内容可以是元素,也可以是另一个子组。属性order指定该组中的元素或子组的顺序,minOccursmaxOccurs分别指定了该组在其父元素中出现的最小次数和最大次数。

4.用Schema定义元素属性   
    
Schema中用来定义属性的元素有两个,AttributeType元素是声明属性的,attribute元素则是说明一个元素中究竟包含那些属性。 
    AttributeType元素 
   AttributeType元素也是Schema中的重要元素之一,用于定义该Schema文档中出现的属性类型。AttributeType的语法表达如下:

<AttributeType 
  
name="属性名" 
  dt:type
="属性类型" 
  dt:values
="枚举值列表" 
  default
="缺省值" 
  required
="{yes | no}" 
>
  1. name
    name不言而喻,自然是所声明的属性类型的名称。注意,该属性是必须的。
  2. dt:type
    dt:type指定所声明属性的数据类型,它除了支持DTD中包含的全部十大数据类型外,还支持一些扩展属性。Schema中的十个基本属性与DTD中属性的对应关系请见下表:
Schema中基本类型 DTD中数据类型
string #PCDATA
enumeration ENUMERATED
id ID
idref IDREF
idrefs IDREFS
nmtoken NMTOKEN
nmtokens NMTOKENS
entity ENTITY
entities EMTITIES
notation NOTATION

     3.dt:value
dt:value只有当dt:type取值"enumeration"时才有效,此时,dt:value需列出所有可能的取值。

    4.default
default指定该属性类型的缺省取值。default取值必须是有效的,例如,当dt:type取值"enumeration"时,default的取值必须来自dt:value所列出的值。

    5.required
required指定该属性对于引用它的元素是否是必须的。取值yes表明是必须的,取值no则表明并非必须。 
  
    6.attribute元素 
 AttributeType和attribute的关系与ElementType和element的关系相同,AttributeType只是起到声明属性的作用,而真正指明一个元素具有哪些属性还需依靠attribute元素。

分享到:
评论

相关推荐

    Schema教程 xml

    在这个教程中,我们将深入探讨XML Schema的核心概念、优势以及如何在实际应用中使用。 1. XML Schema简介 XML Schema的主要目标是定义XML文档的合法结构,包括元素、属性、子元素的关系、顺序、数量、空值规则、...

    XML详解----Schema(精讲)

    * 文档验证:XML Schema可以用于验证XML文档的正确性,确保文档符合预定义的结构和内容。 * 数据存储:XML Schema可以用于定义数据存储的格式和结构,确保数据的正确性和一致性。 XML Schema的优点: * 提高数据...

    XML Schema教程

    - **在应用程序中使用 XML Schema**:XML Schema 可以用于验证 XML 数据的有效性,确保其符合预期的结构和格式要求。 #### 四、XML Schema 标准 - **XML Schema 是 W3C 标准**:XML Schema 在 2001 年成为了万维网...

    XML Schema xsd XML Schema xsd

    3. 验证 XML 文档:XML 解析器或验证工具会根据 Schema 对文档进行验证,发现并报告任何不符合 Schema 规则的问题。 例如,一个简单的 XML 文档可能如下所示: ```xml &lt;?xml version="1.0"?&gt; ...

    XMLSchema经典例题

    XML Schema,全称为XML Schema Definition (XSD),是一种用于描述XML文档结构和数据类型的规范,它是W3C...通过学习和理解这些例子,你将能够更好地掌握XML Schema的使用,从而更有效地设计和验证XML文档的结构。

    XmlSchema标准参考手册

    手册还将详细介绍如何在实际应用中验证XML文档是否符合Schema定义,以及处理错误和警告的方法。 XML Schema对于XML的规范化和结构化处理有着至关重要的作用,特别是在企业级应用程序、Web服务和数据交换等场景中。...

    xml Schema 例子(C#写的验证程序)

    在“XML Schema 例子(C#写的验证程序)”这个项目中,开发者创建了一个C#应用程序,用于验证XML文档是否符合预先定义的XML Schema。这个程序对于那些需要确保XML数据准确无误的应用场景非常有用,比如数据交换、...

    西工大服务计算实验2-1_XML Schema

    通过这些库,你可以加载XML Schema文件,验证XML文档是否符合Schema定义,也可以根据Schema生成XML文档。 标签"SOA"提示我们,这个实验可能与Service-Oriented Architecture(面向服务架构)有关。在SOA中,XML和...

    xmlschema实验及答案.doc

    XML Schema提供了一个强大的工具,用于定义和验证XML文档的结构和内容。 实验五:XML Schema实验目的与要求 通过实验,使学生熟悉XML Schema语法结构,并加深对XML Schema应用的理解。要求学生能够改正XSD文件中的...

    xmlschema:适用于Python的XML模式验证器和数据转换库

    总结,`xmlschema`库是Python中处理XML Schema验证和转换的强大工具,它简化了XML数据的处理流程,提供了与标准库和第三方库的良好兼容性,以及对XML Schema 1.1的支持。对于需要处理XML的Python开发者来说,这是一...

    apache xmlschema api文档

    - 验证XML文档:创建`Validator`对象,然后使用它来验证XML文档是否符合XML Schema。 - 动态解析XML Schema:根据需要加载和解析XML Schema文档,以适应不同的业务需求。 - 查询XML Schema信息:获取元素、属性、...

    XML.rar_dtd xml_xml dtd_xml schema_xml 设计

    在实际应用中,`www.pudn.com.txt`可能包含了有关这些概念的更多详细信息,例如如何在XML文档中引用DTD或XML Schema,以及如何解析和验证遵循这些规范的XML文档。而"设计一种表示图书信息的XML文档"可能是提供了一个...

    XML与WEB Service技术(微软):实验五 在XML文档中使用Schema .doc

    同时,本实验也可以帮助学生更好地理解XML文档的结构和约束,并掌握如何使用XML Schema来描述和验证XML文档。 知识点: 1. XML Schema的定义和应用 XML Schema是一种基于XML的模式语言,用于定义XML文档的结构和...

    XML基础实例 Schema

    Schema用于验证XML文档是否符合预定义的规则,确保数据的一致性和准确性。 Schema的引入解决了DTD的一些局限性,例如支持复杂数据类型、命名空间以及更复杂的约束规则。以下是一些关于XML基础实例和Schema的知识点...

    验证XML控件NIIT

    在这个主题“验证XML控件NIIT”中,我们将深入探讨与XML相关的几个关键概念,包括XML Schema、DTD(Document Type Definition)、XPath以及XML处理的一般性方法。 1. XML Schema: XML Schema是W3C推荐的一种标准,...

    xml实用教程_XML_Schema结构

    #### 二、XML Schema的基本概念 - **元素(Element)**:XML文档中的基本组成部分,可以定义其名称、类型等。 - **属性(Attribute)**:用于附加信息到元素上。 - **类型(Type)**:定义元素或属性的数据类型,可以是...

    一个简单的XML Schema的例子

    尽管XML Schema的概念早在W3C标准出台之前就已经提出,但直到最近W3C发布的标准,XML Schema才逐渐得到广泛应用。尽管目前对Schema的支持尚未完全成熟,但在XML的发展趋势中,XML Schema已经成为重要的结构定义工具...

    XMLSchema 参考手册

    9. **错误处理和警告**:讨论XML Schema验证过程中的错误和警告,以及如何调试和修复问题。 10. **工具支持**:可能涵盖一些常用的XML Schema处理工具,如Xerces、JAXB、XMLBeans等,以及如何利用这些工具进行验证...

    XML_Schema 教程 详细版

    综上所述,XML Schema提供了强大的工具集来定义和验证XML文档,不仅增强了数据的一致性和准确性,还提高了与外部系统的互操作性。学习和掌握XML Schema对于处理复杂数据结构和促进数据交换有着不可估量的价值。

    xml Schema学习

    3. **实例解析**:通过具体例子展示如何编写XML Schema,以及如何使用XML Schema来验证XML文档。 4. **工具支持**:介绍一些常用的XML Schema编辑器和验证工具,如XMLSpy、 Oxygen XML Editor等,以及如何利用这些...

Global site tag (gtag.js) - Google Analytics