zoukankan      html  css  js  c++  java
  • XML语言基础3--Schema

    1.什么是Schema

    XML Schema是用一套预先规定的XML元素和属性创建的,这些元素和属性定义了XML文档的结构和内容模式。

    XML Schema规定XML文档实例的结构和每个元素/属性的数据类型。

     

    2.为什么需要Schema

    弥补DTD的局限性

    Schema的新特性

    一致性:XML Schema 基于XML基本语法规则定义其文档结构;继承了XML的自描述性和可扩展性。

    完备性:引入了数据类型(并可自定义数据类型)、命名空间,支持对其他 XML Schema 的引用,具备较强的模块性;

    规范性和准确性:XML Schema提供了更加规范和完备的机制来约束XML文档。

    面向对象特征:XML Schema中引入了许多成熟的面向对象机制(比如继承性和多态性)。

    扩展性:XML Schema 提供了一些扩展机制,允许在事先无法准确描述数据模式的情况下,在XML实例数据中根据需要添加相关的数据。

     

    3.Schema的文档结构

    XML Schema 文件的后缀名通常为 .xsd

    XML Schema 文件是一个特殊的 XML 文件

    ▪所有Schema文档使用schema作为其根元素
    ▪用于构造Schema的元素和数据类型来自命名空间http://www.w3.org/2001/XMLSchema,前缀一般使用 xs 或 xsd
    示例(保存为Student.xsd):
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" >
     3     <xs:element name="student" type="Student"/>
     4         <xs:complexType name="Student">
     5         <xs:sequence>
     6         <xs:element name="name" type="xs:string"/>
     7         <xs:element name="gender" type="Gender"/>
     8         <xs:element name="no" type="xs:string"/>
     9         <xs:element name="teliphone" type="Telenum"/>
    10         <xs:element name="age" type="xs:nonNegativeInteger"/>
    11         <xs:element name="gpa" type="xs:int" minOccurs="0"/>
    12         </xs:sequence>
    13         </xs:complexType>
    14         <xs:simpleType name="Gender">
    15             <xs:restriction base="xs:string">
    16             <xs:enumeration value="Female"/>
    17             <xs:enumeration value="Male"/>
    18             </xs:restriction>
    19         </xs:simpleType>
    20         <xs:simpleType name="Telenum">
    21             <xs:restriction base="xs:string">
    22             <xs:pattern value="(d{4}-d{8})|(d{3}-d{8})|(d{4}-d{7})"/>
    23             </xs:restriction>
    24         
    25         </xs:simpleType>
    26 </xs:schema>
    View Code

    与Schema建立关联的XML文档:

    1 <?xml version="1.0" encoding="UTF-8"?>
    2 <student xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Student.xsd">
    3     <name>XiaoMing</name>
    4     <gender>Male</gender>
    5     <no>123</no>
    6     <teliphone>011-12345678</teliphone>
    7     <age>20</age>
    8 </student>
    View Code

     

    4.Schema的数据结构

    XML Schema 中的数据类型主要是针对XML元素而言的。

     

    简单类型:不包含任何子元素和属性的元素,只能包含文本内容或是不包含文本的空元素

    --内置数据类型

    基本数据类型 Primitive Datatype

    派生数据类型 Drived Datatype

    --用户自定义的数据类型(通过simpleType定义)

    复杂类型:包含子元素和/或属性的元素,也可包含文本内容(通过complexType定义)。

     

     

    4.1 XML Schema 中用户自定义的简单数据类型

    a) 通过限制(restriction)派生简单数据类型

    b) 

    通过限制(restriction)派生简单数据类型

    c) 通过合并派生简单数据类型

     

    4.2 复杂数据类型

    复杂数据类型的几种情况

    ① 空元素(只包含属性、不包含子元素和文本内容)

    −对于包含属性的空元素,只需定义所需的属性及其数据类型。

    ② 只包含子元素,不包含文本内容(可能包含属性)

    子元素的声明必须放在某个容器中,而不能直接出现在 xs:complexType 元素中,即使是只有一个子元素。

    如果有属性,属性声明必须放在所有子元素声明之后。
    ▪xs:sequence  表示序列,元素必须按照声明的顺序出现。
    ▪xs:choice   表示从所包含的内容中选择其一。
    ▪xs:all 表示其中所包含的内容不分先后顺序。

    ③ 只包含文本内容和属性,不包含子元素

    对于这种类型的元素,只包含简单内容(文本和属性),声明时,XML Schema中引入了一个新的元素simpleContent(用于表示“文本”、或者“文本+属性”)。

    ④ 同时包含子元素和文本(可能包含属性)

    定义这种复杂数据类型,要使用complexType的mixed属性。

    如果有属性,属性声明必须放在所有子元素声明之后。

     
  • 相关阅读:
    TCP/IP讲解
    Android开发的技术层次
    页面右下角弹出类似QQ或MSN的消息提示
    C# winform 自定义鼠标图标
    C#遍历指定文件夹中的所有文件
    C#操作Word
    关于数据绑定的一些小技巧
    Silverlight遍历本地文件夹
    ckeditor+ckfinder+syntaxhighlight实现上传和插入代码高亮(for .NET)
    wpf 动画效果
  • 原文地址:https://www.cnblogs.com/wsw-tcsygrwfqd/p/5330532.html
Copyright © 2011-2022 走看看