`

手工编写一个XML Schema(XSD)的实例

    博客分类:
  • XML
阅读更多

手工编写一个XML Schema(XSD)的实例

简单说:xml Schema就是xml的一个class,也相当于关系表的表结构模式。目前大都可以由程序根据已有的xml自动生成它的xsd,或者根据关系表生成它相应的xsd(实际就是将关系数据转换成xml数据,Vs2005中的类型化的Dataset就是这样实现的)。

对xml Schema做一些简单了解还是很有益处的。

XML Schema用于描述XML文档结构的文件。XML Schema有时又称为XML Schema Definition,所以也会称为XSD。因此Schema文件是以xsd为后缀的。

定义XML文档结构结构指:
  • 定义可以出现在文档中的Element。
  • 定义可以出现在文档中的Attribute。
  • 定义哪些Element是子元素。
  • 定义Element的顺序。
  • 定义子元素的数目。
  • 定义一个元素是否能为空,是否能包含文本。
  • 为每个Element和Attribute定义数据类型。
  • 为Element和Attribute定义默认值和固定值。
因为有了以上的定义,我们才能更清晰的使用XML描述我们要表达的内容。使XML的接受方能更容易明白内容的含义。

对XML文档的验证有如下几个步骤:
1.定义一份XML Schema或DTD: Schema或DTD为同一类型的所有文档定义了结构标准,比如有关书籍信息的文档可共享一份标准。
2.应用Schema或DTD:一般由文档的作者指定Schema,这样接收方可以很快地根据说明对文档进行验证。但在C/S(客户机/服务器)环境中,由于服务器无法判断XML在客户端是否已经验证过,所以为了能够确保验证过程,也为了避免可能的重复验证,对文档应用Schema或DTD的操作由服务器完成。
3.运行解析器进行验证:解析器在装载文档的同时扫描结构,遇到任何错误都会终止装载过程,并做出适当的响应。

以下是一个xml与它相应的xml schema的实例。

给定xml (project_4.xml)文件如下:

<UWO>
    
<Departments>
  
<Department>
   
<Name>Economics</Name>
   
<Address>Social Science Centre, UWO, London, Ontario, Canada , N6A 5C2</Address>
   
<Location>SSC 4071</Location>
   
<Phone>519 661-3500 x83500</Phone>
   
<Facsimile>519 661-3666 x83666</Facsimile>
   
<Email>economics@uwo.ca</Email>
   
<WEB>http://economics.uwo.ca</WEB>
  
</Department>
  
<Department>
   
<Name>Political_science</Name>
   
<Address>Social Science Centre, UWO, London, Ontario, Canada , N6A 5C2</Address>
   
<Location>SSC 4154</Location>
   
<Phone>519 661-3266 x83266</Phone>
   
<Facsimile>519 661-3904 x83904</Facsimile>
   
<Email>polisci-web@uwo.ca</Email>
   
<WEB>http://politicalscience.uwo.ca</WEB>
   
<SERVICES>
    
<Service>
     
<Name>Local_Government_program</Name>
     
<Phone>519 661-2111 x80501</Phone>
     
<Location>SSC 4148</Location>
     
<WEB>http://localgovernment.uwo.ca</WEB>
    
</Service>
    
<Service>
     
<Name>Politics_020E_course_Coordinator</Name>
     
<Phone>519 661-2111 x85108</Phone>
     
<Location>ssc 4149</Location>
    
</Service>
   
</SERVICES>
  
</Department>
   
</Departments>
</UWO>

对该xml大致分析,基本确定它的模式信息,开始编写XSD文件:

project.xsd
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://bbs.xml.org.cn" xmlns="http://bbs.xml.org.cn" elementFormDefault="qualified">
    
<xsd:element name="UWO">
        
<xsd:complexType>
            
<xsd:sequence>
                
<xsd:element name="Departments">
                    
<xsd:complexType>
                        
<xsd:sequence>
                            
<xsd:element name="Department" type="departmentType" maxOccurs="unbounded"/><!--调用后面定义的departmentType类型-->
                        
</xsd:sequence>
                    
</xsd:complexType>
                
</xsd:element>
            
</xsd:sequence>
        
</xsd:complexType>
    
</xsd:element>
    
<xsd:group name="departmentBasic"><!--定义一个group-->
        
<xsd:sequence>
            
<xsd:element name="Name" type="xsd:string"/>
            
<xsd:element name="Address" type="xsd:string"/>
            
<xsd:element name="Location" type="xsd:string"/>
            
<xsd:element name="Phone" type="xsd:string"/>
            
<xsd:element name="Facsimile" type="xsd:string"/>
            
<xsd:element name="Email" type="xsd:string"/>
            
<xsd:element name="WEB" type="xsd:string"/>
        
</xsd:sequence>
    
</xsd:group>
    
<xsd:complexType name="departmentType"><!--定义departmentType类型-->
        
<xsd:sequence>
            
<xsd:group ref="departmentBasic"/><!--引用前面定义的group-->
            
<xsd:element name="SERVICES" maxOccurs="1" minOccurs="0" type="servicesType"/><!--调用后面定义的servicesType类型-->
        
</xsd:sequence>
    
</xsd:complexType>
    
<xsd:complexType name="servicesType"><!--定义servicesType类型-->
        
<xsd:sequence>
            
<xsd:element name="Service" maxOccurs="unbounded">
                
<xsd:complexType>
                    
<xsd:sequence>
                        
<xsd:element name="Name" type="xsd:string"/>
                        
<xsd:element name="Phone" type="xsd:string"/>
                        
<xsd:element name="Location" type="xsd:string"/>
                        
<xsd:element name="WEB" type="xsd:string" minOccurs="0"/>
                    
</xsd:sequence>
                
</xsd:complexType>
            
</xsd:element>
        
</xsd:sequence>
    
</xsd:complexType>
</xsd:schema>
 

如果使用该XSD验证以上xml文件,并且这两个文件在同一目录下,则只要如下修改xml文件:

<?xml version="1.0"?>
<UWO xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://bbs.xml.org.cn project.xsd" xmlns="http://bbs.xml.org.cn">

以上大号字体则是验证模式文件的路径。

参考:http://www.w3school.com.cn/schema/index.asp

分享到:
评论

相关推荐

    理解XML Schema XML Schema进阶

    目标命名空间使我们能够区分在XML Schema语言词汇表中的元素声明和在一个其他的假定的化学语言词汇表中的元素声明。 2. 模式文档和目标命名空间 模式文档可以被看做是一个类型定义和元素声明的集合,他们的名字被...

    XML Schema教程

    - **XSD&lt;schema&gt; 元素**:这是 XML Schema 的根元素,用于声明一个 XML Schema 文档。它包含了所有其他用于定义元素、属性和类型的声明。 - **简单的类型**:简单类型定义了单一的数据类型,如字符串、数字等。简单...

    xmlschema-core-2.0.3的jar

    在Spring配置文件中,可以声明一个`WebServiceTemplate`或`Marshaller`实例,它们依赖于XML Schema Core库来处理XML和XSD相关的操作。 结合`java xml`标签,我们可以看出这是关于Java平台上的XML处理。Java的DOM、...

    XML - 实验(2) -- Schema

    如何将XML Schema文档关联到XML实例数据文档,并完成文档的有效性验证。 3、掌握如何准确定义数据之间的参照完整性约束,如何在模式中使用多态性支持,如何在文档中定义空值等等。 [提交内容] 提交book.xsd、book....

    XML Schema(XSD)简明教程高清pdf

    - **XML文档与Schema关联**:XML文档可以通过`xsd:noNamespaceSchemaLocation`或`xsd:schemaLocation`属性引用一个XML Schema文件,以确保该文档遵循Schema定义的规则。 - 示例代码展示如何在一个名为`note.xml`的...

    xml文件转xsd文件

    XML(eXtensible Markup Language)文件是一种...这个过程中涉及到XML解析、XSD设计、数据验证和Java对象的生成,是XML数据处理的一个重要环节。了解和掌握这一技能,对于提升软件开发效率和保证数据质量具有重要意义。

    XMLSchema经典例题

    在“XMLSchema例子”文件中,你将看到这些概念如何实际应用于具体的XML Schema定义和XML文档实例。通过学习和理解这些例子,你将能够更好地掌握XML Schema的使用,从而更有效地设计和验证XML文档的结构。

    XML基础实例 Schema

    8. **第二章 Schema**:这个文件名可能指的是学习XML Schema的一个章节,该章节可能详细讲解了Schema的某一部分,如数据类型的扩展、限制、枚举值、模式匹配等。 总之,XML基础实例和Schema是XML编程中的核心概念。...

    java根据xml生成schema_xsd_生成javabean

    在本例中,可能使用了`trang.jar`将一个XML实例文档(如`pro.xml`)转换为对应的XSD文件,从而明确XML文档的结构。 2. XSD到JavaBean的生成:生成JavaBean是将XSD文件中的元素和属性映射为Java类的过程,这有助于在...

    xml schema实例

    在这个实例中,`person`元素有一个名为`id`的属性,类型为`xs:ID`,这是XML Schema的一个预定义类型,常用于唯一标识。 总结来说,XML Schema实例通过使用简单类型、复合类型、元素定义和属性定义,为XML文档提供了...

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

    1. **XmlSchema**: 这是XML Schema的根对象,用于表示整个XML Schema文档。 2. **XmlSchemaSet**: 用于存储和加载多个XML Schema,并进行验证。可以使用Add方法添加新的XML Schema。 3. **XmlSchemaValidator**: ...

    AUTOSAR_MMOD_XMLSchema.zip

    标题中的"AUTOSAR_MMOD_XMLSchema.zip"指的是一个与AUTOSAR(AUTomotive Open System ARchitecture)相关的压缩包文件,它包含了MMOD(Model-based Modeling and Development)的XML Schema定义。AUTOSAR是一种全球...

    xml schema complete reference

    XML Schema,全称为XML Schema Definition (XSD),是XML(可扩展标记语言)的一个关键组成部分,用于定义XML文档的结构和数据类型。2002年出版的《Addison Wesley - The XML Schema Complete Reference》是对XML ...

    Java通过XML Schema校验XML

    2. **获取SAXParser实例**:通过`SAXParserFactory.newInstance()`方法创建一个新的SAX解析器工厂,并从中获取SAXParser实例。 3. **设置校验器**:使用DOM4j的`SAXValidator`类创建一个校验器对象,并设置XSD文件的...

    XML_Schema 教程 详细版

    #### 十七、一个XSD实例 实例展示如何使用上述元素和属性来定义一个完整的XML Schema。 #### 十八至二十、XSD字符串、日期及时间、数值数据类型 分别详细介绍了XML Schema中预定义的数据类型,如`string`、`date`...

    XSD(Schema)教程

    XSD,全称为XML Schema Definition,是W3C(World Wide Web Consortium)制定的一种XML文档结构定义语言,用于规范和验证XML文档的结构和数据类型。它提供了比DTD(Document Type Definition)更为强大和灵活的XML...

    java生成xsd,xml示例

    以下是一个简单的XSD示例,对应上面的XML文档: ```xml &lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt; &lt;/xs:schema&gt; ``` 在Java中生成XML文档,我们可以使用DOM(Document Object ...

    《XML》实验任务书 XML Schema 答案 解答

    2、严格按照下图给出的文档模型,在XML Schema编辑环境的Schema视图中完成book.xsd的编写(不要使用Text视图进行编写): 在上图中,没有指定简单类型元素和属性的数据类型,请根据合理的情况,完成数据类型的创建...

Global site tag (gtag.js) - Google Analytics