`

XML学习之 schema

阅读更多
    今天学习了XML的schema,感觉schema的功能可以对文本进行相应的校验, 功能较dtd强大很多,但是难度也大很多。

  首先将dtd与XML做一个简单的比较:
  1. dtd不遵循xml语法
  2. dtd数据类型有限
  3. dtd不可扩展
  4. dtd不支持命名空间。
 
     刚完成的一个XML schema的习题
 
       综合练习:书藉信息表

字段名
数据类型和约束

书藉编号
唯一 二个数字开头-三个字母结尾 /必需 作为属性

书藉名称
1---30个字符/必需

名称类型
作为书藉名称的属性 中文名、英文名  枚举/必需

书藉类型
武侠小说、言情小说、软件编程、数据库入门 枚举/必需

书藉价格
1-10000  必需

价格类型
作为书藉价格的属性  人民币、美元、欧元、日元

作者
原著
1---100个字符/必需可以多个

翻译
1---100个字符/可以多个

性别
作为原著和翻译的属性  男、女 枚举/必需

国籍
作为原著和翻译的属性 中国、美国、荷兰

枚举/必需



做题思路步骤如下:
1、 根据题意对所有的元素进行分类,分为简单类型元素与复杂类型元素两大类。 简单元素类型
是指元素开始之间只有文本而没有属性的元素。
2、 再将简单类型元素分成对文本没有限制于对文本有限制的两类。 对文本类型有限制的简单元素类型
要通过自定义简单类型做相应的限制约束。
3、 对复杂类型的元素进行分类, 分为含有子元素的元素; 含有属性、子元素的元素; 含有属性
、文本的元素; 含有属性的空元素共四类。
最后对照上述分类再分别进行相应的处理即OK。建议构造schema的xsd文件时按从小到大,从简单到复杂的
顺序进行构造。

现在草纸上画好结构草图,然后编码.xsd文件:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<!--名称类型-->
<xs:attribute name="nameType">
<xs:simpleType>
  <xs:restriction base="xs:string">
   <xs:enumeration value="中文名"/>
   <xs:enumeration value="英文名"/>
  </xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:simpleType name="bookNameRistriction">
<xs:restriction base="xs:string">
  <xs:minLength value="1"/>
  <xs:maxLength value="30"/>
</xs:restriction>
</xs:simpleType>
<!--书籍名称元素定义-->

<xs:element name="bookName">
  <xs:complexType>
   <xs:simpleContent>
    <xs:extension base="bookNameRistriction">
    <xs:attribute ref="nameType" use="required"/>
    </xs:extension>
   </xs:simpleContent>
  </xs:complexType>
</xs:element>

<!--定义书籍类型-->
<xs:element name="bookType">
  <xs:simpleType>
   <xs:restriction base="xs:string">
    <xs:enumeration value="武侠小说"/>
    <xs:enumeration value="言情小说"/>
    <xs:enumeration value="软件编程"/>
    <xs:enumeration value="数据库入门"/>
   </xs:restriction>
  </xs:simpleType>
</xs:element>

<!--定义价格类型属性-->
<xs:attribute name="priceType">
  <xs:simpleType>
   <xs:restriction base="xs:string">
   <xs:enumeration value="日元"/>
   <xs:enumeration value="美元"/>
   <xs:enumeration value="人民币"/>
   </xs:restriction>
  </xs:simpleType>
</xs:attribute>
<!--定义书籍价格-->
<xs:simpleType name="priceRestriction">
  <xs:restriction base="xs:float">
   <xs:minInclusive value="1"/>
   <xs:maxInclusive value="10000"/>
  </xs:restriction>
</xs:simpleType>
<xs:element name="bookPrice">
  <xs:complexType>
   <xs:simpleContent>
    <xs:extension base="priceRestriction">
    <xs:attribute ref="priceType" use="required"/>
    </xs:extension>
   </xs:simpleContent>
  </xs:complexType>
</xs:element>

<!--定义属性组-->
<xs:attributeGroup name="authorAttribute">
  <xs:attribute name="sex" use="required">
   <xs:simpleType>
    <xs:restriction base="xs:string">
    <xs:enumeration value="男"/>
    <xs:enumeration value="女"/>
    </xs:restriction>
   </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="national" use="required">
   <xs:simpleType>
    <xs:restriction base="xs:string">
    <xs:enumeration value="中国"/>
    <xs:enumeration value="美国"/>
    </xs:restriction>
   </xs:simpleType>
  </xs:attribute>
</xs:attributeGroup>

<xs:simpleType name="authorNameLength">
  <xs:restriction base="xs:string">
   <xs:minLength value="1"/>
   <xs:maxLength value="100"/>
  </xs:restriction>
</xs:simpleType>
<!--定义原著-->
<xs:element name="originalAuthor">
  <xs:complexType>
   <xs:simpleContent>
    <xs:extension base="authorNameLength">
     <xs:attributeGroup ref="authorAttribute"/>
    </xs:extension>
   </xs:simpleContent>
  </xs:complexType>
</xs:element>

<!--定义翻译-->
<xs:element name="translator">
  <xs:complexType>
   <xs:simpleContent>
    <xs:extension base="authorNameLength">
     <xs:attributeGroup ref="authorAttribute"/>
    </xs:extension>
   </xs:simpleContent>
  </xs:complexType>
</xs:element>
<!--定义作者-->
<xs:element name="author">
  <xs:complexType>
   <xs:sequence>
   <xs:element ref="originalAuthor" maxOccurs="unbounded"/>
   <xs:element ref="translator" minOccurs="0" maxOccurs="unbounded"/>
   </xs:sequence>
  </xs:complexType>
</xs:element>

<!--定义书籍编号属性-->
<xs:attribute name="bookId">
  <xs:simpleType>
   <xs:restriction base="xs:string">
   <xs:pattern value="[0-9]{2}[a-zA-Z]{3}"/>
   </xs:restriction>
  </xs:simpleType>
</xs:attribute>

<xs:element name="book">
  <xs:complexType>
   <xs:sequence>
   <xs:element ref="bookName"/>
   <xs:element ref="bookType"/>
   <xs:element ref="bookPrice"/>
   <xs:element ref="author"/>
   </xs:sequence>
   <xs:attribute ref="bookId" use="required"/>
  </xs:complexType>
</xs:element>

<xs:element name="books">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="book" maxOccurs="unbounded"/>
   </xs:sequence>
  </xs:complexType>
  <xs:unique name="uniqueBook">
   <xs:selector xpath="book"></xs:selector>
   <xs:field xpath="@bookId"></xs:field>
  </xs:unique>
</xs:element>
</xs:schema>

最后再新建一个.xml文件,并在其中导入.xsd文件, 写好相应的xml文件OK!


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/JAVAZHICHIZHE/archive/2009/04/25/4123672.aspx
分享到:
评论

相关推荐

    根据xml schema生成xml

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件、文档存储等领域。...因此,学习和理解XML Schema及其在生成XML文档中的应用,对于IT从业者来说是非常有价值的。

    XML学习 练习SCHEMA

    通过"XML学习 练习SCHEMA"的教程,你将深入理解这些概念,并通过实际操作掌握如何编写和应用XML SCHEMA。这将有助于你创建和维护结构清晰、符合规范的XML文档,提升数据的可靠性和互操作性。在进行练习时,可能会...

    运用XML Spy新建XML Schema的教程

    压缩包里详细介绍了如何利用XML Spy这个软件新建一个XML Schema文档,内容非常充实,在网上找了很久自己整理好的,只要按照文档的步骤就可以很快学会如何使用XML Spy了,非常适合初次接触XML知识和XML Spy这个软件的...

    XSD根据xml生成schema文件

    通过学习和实践,你可以熟练地根据XML文件生成XSD schema,从而更有效地管理和维护你的XML数据。这是一项基础但至关重要的IT技能,对于处理XML相关的项目和任务至关重要。同时,不断更新和优化XSD文件,以适应业务...

    XML Schema 的简介

    为了学习 XML Schema,需要具备的基础知识包括 HTML、XHTML、XML 以及 XML 命名空间和对 DTD 的基本了解。 XML Schema 的主要作用是定义 XML 文档的合法构建模块,类似 DTD。它可以: * 定义可出现在文档中的元素 ...

    XMLSchema.chm

    这个“XMLSchema.chm”文件很可能是一个帮助文档,旨在为学习XML Schema的用户提供详细的指导和参考资料。下面我们将深入探讨XML Schema的相关知识点。 1. **XML Schema的作用**:XML Schema的主要功能是规范XML...

    XML基础实例 Schema

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

    xml Schema学习

    本篇文章将深入探讨XML Schema的学习要点,包括其基本概念、语法、优势以及如何在实际工作中应用。 XML Schema的主要目的是提供比DTD更强大且类型化的数据描述能力。它引入了数据类型系统,允许开发者定义复杂的...

    XML Schema简明教程-W3C.rar

    在此教程中,你将学习如何在应用程序中读取和创建 XML Schema 语言,XML Schema 为何比 DTD 更加强大,以及如何在您的应用程序中使用 XML Schema。 什么是 XML Schema? XML Schema 的作用是定义 XML 文档的合法构建...

    Schema教程 xml

    XML Schema教程 XML Schema是一种基于XML的文档类型定义(DTD)替代方案,它提供了更为强大且灵活的方式来描述...通过学习和使用XML Schema,开发者可以创建更规范、更易于维护的XML文档,提高数据的准确性和一致性。

    xml.rar_java xml_xml schema

    而`Research.rar`可能是一个包含更多示例代码或XML文档的压缩文件,供学习者参考和实践。 总结,利用Java和XML Schema解析XML涉及的关键步骤包括:创建JAXBContext、获取Unmarshaller和Marshaller对象、反序列化XML...

    XMLSchema经典例题

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

    xml schema 学习笔记

    "XML Schema 学习笔记" XML Schema 是一种基于 XML 的语言,用于定义 XML 文档的结构和约束。它可以描述 XML 文档的格式、元素、属性、数据类型、默认值、固定值等信息。XML Schema 的作用类似于 DTD,但它具有更多...

    XML Schema初窥

    【XML Schema初窥】 XML Schema 是一种XML文档结构定义语言,由W3C于1998年开始制定,2001年5月2日发布1.0版...通过学习和熟练掌握XML Schema,开发者能够更好地控制和管理XML文档的规范性,确保数据的准确性和一致性。

    XML Schema xsd XML Schema xsd

    XML Schema 是一种基于 XML 的规范,用于定义 XML 文档的结构和数据类型。它是 Document Type Definition (DTD) 的现代替代品,提供了更多功能和灵活性。XML Schema 的主要目标是为 XML 文档提供一种严格的形式化...

    XML_Schema 教程 详细版

    **基础知识需求**:在深入学习XML Schema之前,建议读者具备以下基础知识: - HTML/XHTML - XML及其命名空间 - 对DTD有基本理解 **XML Schema 功能**: - **元素定义**:明确哪些元素可以在文档中出现。 - **属性...

    c# XML 验证器 Schema验证XML

    标题"XML 验证器 - C#中的Schema验证XML"着重强调了使用C#来验证XML文档是否符合预定义的XML Schema。XML Schema是W3C标准,用于定义XML文档的结构和数据类型,确保数据的一致性和准确性。 描述中提到的"博文链接:...

    XML - 实验(2) -- Schema

    1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。 2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单...

Global site tag (gtag.js) - Google Analytics