Introduction

An xml documents consists of elements, attributes and text.

There are two structures in an xml document:

simple ( contains only text ) can ba either Built-in, or Derived

complex ( has attributes or child elements, and possibly texts as well)

Restriction on values:

<xs:element name="age">

<xs:simpleType>

<xs:restriction base="xs:integer">

<xs:minInclusive value="0"/>

<xs:maxInclusive value="120"/>

</xs:restriction>    </xs:simpleType>

</xs:element>

To limited the content of an XML element to a set of acceptable values, we can use the enumeration constraint:

<xs:element name="car" type="carType"/>

<xs:simpleType name="carType">

<xs:restriction base="xs:string">

<xs:enumeration value="Audi"/>

<xs:enumeration value="Golf"/>

<xs:enumeration value="BMW"/>

</xs:restriction>

</xs:simpleType>

Restrictions on a Series of Values

<xs:element name="initials">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:pattern value="[A-Z][A-Z][A-Z]"/>

<xs:pattern value="[a-zA-Z0-9]{8}"/>

<xs:length value="8"/>

</xs:restriction>

</xs:simpleType>

</xs:element>

xs:schema is the root element of the XSD document

<xs: schame

xmlns:xs="http://www.w3.org/2001/XMLSchema"  //must have the namespace declaration (Schema for schemas i.e. "http://www.w3.org/2001/XMLSchema")

version="1.1">

...

...

</xs:schema>  under xs:schema (global:can be referenced)/further down the schema hierarchy (local)

global elements also can be substituted by another element!

xs:schema cam contain the following child elements:

  • xs:include
  • xs:import
  • xs:override     new to XML Schema 1.1
  • xs:element
  • xs:attribute
  • xs:group    enables you to specidy constraints on a specific set of sub-elements
  • xs:attributeGroup
  • xs:annotation     can contain two child elements: xs:appinfo/xs:documentation
  • xs:defaultOpenContent     new to XML Schema 1.1
  • xs:simpleType or
  • xs:complexType   re-use previous definitions (base="complexTypeName", type="complexTypeName")

i.e.

<?xml version="1.0" encoding="UTF-8"?>

<!-- edited with XMLSpy v2014(x64) (http://www.altova.com) by Christian Luntzer (Altova GmbH) -->

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.1">

<xs:element name="city" type="xs:string" default="MainStreet"/>

//global element name is mandatory, type is optional

<xs:element name="shoesize">  //Complex Element type1:  simple contents

<xs:complexType>  //Only contains simple contents: text, attributes

<xs:simpleContent>

<xs:extension base="xs:integer">

<xs:attribute name="country" type="xs:string" />

</xs:extension>

</xs:simpleContent>

</xs:complexType>

</xs:element>

<xs:element name="address">

<xs:complexType>      //Complex element Type2: mixed contents

<xs:annotation>

<xs:documentation>type which contains driver....

</xs:documentation>

</xs:annotation>

<xs:sequence mixed="ture">    //contains mixed contents

<xs:element name="street" type="xs:string"/>    //local element declaration "street", mandatory

<xs:element ref="city"/>//local element reference"city", name and type attribute cannot be present   </xs:sequence>

</xs:complexType>

</xs:element>

<xs:element name="product">  //Complex element Type3: only attribute content

<xs:complexType>

<xs:complexContent>

<xs:restriction base="xs:integer“>

<xs:attribute name="prodid" type="xs:positiveInteger"/>

</xs:restriction>

</xs:complexContent>

</xs:complexType>

</xs:element>

</xs:schema>

Attributes only can be simple, not complex

<?xml version="1.0" encoding="UTF-8"?>

<!-- edited with XMLSpy v2014(x64) (http://www.altova.com) by Christian Luntzer (Altova GmbH) -->

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.1">

<xs:element name="gift_voucher">

<xs:complexType>

<xs:attribute ref="voucher_id"/> //local attribute reference to a global attribute declaration

<xs:attribute name="expiry_date" type="xs:date"/>  //(local attribute) name is mandatory, type is optional  </xs:complexType>

</xs:element>

<xs:attribute name="voucher_id" type="xs:positiveInteger"/> global attribute declaration

<xs:element name="person">  //MinOccurs and MaxOccurs can be used for both element and group

<xs:complexType>

<xs:sequence>

<xs:element name="full_name" type="xs:string"/>

<xs:element name="child_name" type="xs:string" maxOccurs="10" minOccurs="0"/>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

default/fixed: mutually exclusive

If an element appeas but is empty, the schema processor provides the default value. If the element is missing, the schema processor does not provide the default value.

Cannot appear on local element references.

Attribute's default value will provide a default value for an attribute if the attribute is missing from the xml document. It will not provide a default value for a missing element.

Group must be defined globally, though the local reference to a globally named group can exist.

unnamed groups (compositors): xs:sequence; xs:choice; xs:all also can be used foe complex element

<xs:group name="vehiclegroup" minOccurs="1" maxOccurs="1">

<xs:choice>  //only one sub-element can be used from a list of sub-elements

<xs:element name="car"/>

<xs:element name="motorbike"/>

</xs:choice>

</xs:group>

<xs:element name="car" type="carinfo"/>

<xs:complexType name="carinfo">

<xs:sequence>

<xs:group ref="vehiclegroup"/>    //re-using a group definition , the referenced element has to be a global one.

<xs:element name="country" type="xs:string"/>

</xs:sequence>

</xs:complexType>

attributeGroup situations arise where there are several different elements that will require the same set of attributes.

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.1">

<xs:element name="person">

<xs:complexType>

<xs:attributeGroup ref="dimensions"/>

</xs:complexType>

</xs:element>

<xs:attributeGroup name="dimensions">

<xs:attribute name="height" type="xs:positiveInteger"/>

<xs:attribute name="weight" type="xs:positiveInteger"/>

</xs:attributeGroup>

</xs:schema>

Built-in datatypes

only one complex datatype:

<xs: element name="para" type="xs:anyType"/> ==<xs:element name="pare"/>

User-defined Simple Types

simple types can only be derived via restriction. This mean that the derived simple type will only allow a base type it is being derived from. The base type is more general, the derived type is more specific.

Namespaces

Mixing Several Namespaces

<gs:dish xmlns: gs = “http://china.com“

xmlns: uom = “http://units.com“>

<gs:dm uom:unit = “cm“>20</gs:dm>

<gs:vol uom:unit = “1“>5</gs:vol>

<gs:decor>Meissner</gs:decor>

<comment>This is an unqualified element name</comment>

</gs:dish>

reference:

XML Schema and XMLspy notes的更多相关文章

  1. XML Schema使用技巧——unique

    XML Schema使用技巧——unique   XML Scheam允许指定某个元素或属性的值在一定得范围内是唯一的.为了指定元素或属性值的唯一性,可以使用<xs:unqiue>元素,使 ...

  2. XML&DTD&XML Schema学习

    XML(eXtensible Markup Language)可扩展的标记语言.xml在web service编程中尤为重要.在网络传输中可以作为传输数据的载体.xml作为元语言,它可以用来标记数据. ...

  3. XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式

    XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD),作用是定义 XML 文档的合法构建模块,类似 DTD,但更加强大. 作用有: ①定义 ...

  4. XML Schema命名空间解析

    URI Web中汇集了各种资源.资源可以是具有标识的任何事物, 如文档. 文件. 菜单项. 计算机. 服务等, 甚至可以包括人. 组织和概念[BernersLee 1998].在Web体系结构中, ...

  5. 【转】XSD (xml Schema Definition)

    来自:http://www.cnblogs.com/newsouls/archive/2011/10/28/2227765.html Xml Schema的用途 1.  定义一个Xml文档中都有什么元 ...

  6. C#与XML Schema的问题

    http://bbs.csdn.net/topics/50493564 weileily: 用XmlSchema.Read方法读取了一个xsd文件,请问如何遍历检索器中的ComplexType与Sim ...

  7. XML Schema的基本语法(转)

    XML Schema的基本语法(转) XSDL(XML Schema定义语言)由元素.属性.命名空间和XML文档种的其他节点构成的. 一.XSD中的元素 XSD文档至少要包含:schema根元素和XM ...

  8. Xml Schema:C#访问在complextype中插入新元素

    最近用c#写Xml Schema代码,找了很久也找不到如何在已有的complextype中插入新的element,最后我充分发挥自己的聪明才智,哈哈,终于从...中找到了灵感. XmlSchemaSe ...

  9. [BTS] System.Xml.Schema.XmlSchemaException: The complexType has already been declared when generate IDoc schema.

    I use wcf-sap adapter for generate the schema of IDoc that named "YHREMPMASTER". but throw ...

随机推荐

  1. 用最简单的方式在C#中使用多线程加速耗时的图像处理算法的执行(多核机器)。

    图像处理中,有很多算法由于其内在的复杂性是天然的耗时大户,加之图像本身蕴涵的数据量比一般的对象就大,因此,针对这类算法,执行速度的提在很大程度上依赖于硬件的性能,现在流行的CPU都是至少2核的,稍微好 ...

  2. [译文]选择使用正确的 Markdown Parser

    以下客座文章由Ray Villalobos提供.在这篇文章中Ray将要去探索很多种不同的Markdown语法.所有的这些MarkDown变种均提供了不同的特性,都超越传统的Markdown语法,却又相 ...

  3. JavaScript 基础回顾——对象

    JavaScript是基于对象的解释性语言,全部数据都是对象.在 JavaScript 中并没有 class 的概念,但是可以通过对象和类的模拟来实现面向对象编程. 1.对象 在JavaScript中 ...

  4. JavaScript获取客户端计算机硬件及系统等信息的方法

    JavaScript获取客户端计算机硬件及系统等信息的方法 JavaScript 获取客户端计算机硬件及系统信息 通过WMI来实现获取客户端计算机硬件及系统信息: function getSysInf ...

  5. Counting Bits -leetcode

    introduction: Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num  ...

  6. 网格弹簧质点系统模拟(Spring-Mass System by Fast Method)附源码

    弹簧质点模型的求解方法包括显式欧拉积分和隐式欧拉积分等方法,其中显式欧拉积分求解快速,但积分步长小,两个可视帧之间需要多次积分,而隐式欧拉积分则需要求解线性方程组,但其稳定性好,能够取较大的积分步长. ...

  7. Dubbo消费端错误: ClassNotFoundException: org.apache.zookeeper.proto.WatcherEvent

    出现错误的原因是消费端war没有启动成功, 但是zkClient和Dubbo的对应Thread启动了, web container无法加载对应的类, INFO: Initializing Protoc ...

  8. 别出心裁的Linux命令学习法

    别出心裁的Linux命令学习法 操作系统操作系统为你完成所有"硬件相关.应用无关"的工作,以给你方便.效率.安全.操作系统的功能我总结为两点:管家婆和服务生: 管家婆:通过进程.虚 ...

  9. MFC vs2012 Office2013 读写excel文件

    近期在忙一个小项目(和同学一起搞的),在这里客户要求不但读写txt,而且可以读写excel文件,这里本以为很简单,结果...废话少说,过程如下: 笔者环境:win7 64+VS2012+Office2 ...

  10. 利用python将二值csv格式转换为矩阵

    #!/usr/bin/env python # coding:utf-8 #import pandas as pd, numpy as np; ''' 将csv文件转换为对应的邻接矩阵mat ''' ...