XML Schema and XMLspy notes
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:
- http://altova-aot.s3.amazonaws.com/Altova%20XML%20Schema%201.120Technology/player.html
- http://www.w3schools.com/schema/
XML Schema and XMLspy notes的更多相关文章
- XML Schema使用技巧——unique
XML Schema使用技巧——unique XML Scheam允许指定某个元素或属性的值在一定得范围内是唯一的.为了指定元素或属性值的唯一性,可以使用<xs:unqiue>元素,使 ...
- XML&DTD&XML Schema学习
XML(eXtensible Markup Language)可扩展的标记语言.xml在web service编程中尤为重要.在网络传输中可以作为传输数据的载体.xml作为元语言,它可以用来标记数据. ...
- XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式
XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD),作用是定义 XML 文档的合法构建模块,类似 DTD,但更加强大. 作用有: ①定义 ...
- XML Schema命名空间解析
URI Web中汇集了各种资源.资源可以是具有标识的任何事物, 如文档. 文件. 菜单项. 计算机. 服务等, 甚至可以包括人. 组织和概念[BernersLee 1998].在Web体系结构中, ...
- 【转】XSD (xml Schema Definition)
来自:http://www.cnblogs.com/newsouls/archive/2011/10/28/2227765.html Xml Schema的用途 1. 定义一个Xml文档中都有什么元 ...
- C#与XML Schema的问题
http://bbs.csdn.net/topics/50493564 weileily: 用XmlSchema.Read方法读取了一个xsd文件,请问如何遍历检索器中的ComplexType与Sim ...
- XML Schema的基本语法(转)
XML Schema的基本语法(转) XSDL(XML Schema定义语言)由元素.属性.命名空间和XML文档种的其他节点构成的. 一.XSD中的元素 XSD文档至少要包含:schema根元素和XM ...
- Xml Schema:C#访问在complextype中插入新元素
最近用c#写Xml Schema代码,找了很久也找不到如何在已有的complextype中插入新的element,最后我充分发挥自己的聪明才智,哈哈,终于从...中找到了灵感. XmlSchemaSe ...
- [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 ...
随机推荐
- Java:类与继承
Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知 ...
- Python 数据类型及其用法
本文总结一下Python中用到的各种数据类型,以及如何使用可以使得我们的代码变得简洁. 基本结构 我们首先要看的是几乎任何语言都具有的数据类型,包括字符串.整型.浮点型以及布尔类型.这些基本数据类型组 ...
- px,em,rem
px:像素是相对于显示器屏幕分辨率而言的相对长度单位.pc端使用px倒也无所谓,可是在移动端,因为手机分辨率种类颇多,不可能一个个去适配,这时px就显得非常无力,所以就要考虑em和rem. em:继承 ...
- [转载]python:open/文件操作
open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) #读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式 如:' ...
- Java 读写文件方案
一.获得控制台用户输入的信息 public String getInputMessage() throws IOException...{ System.out.println ...
- [No000084]C# 使用Log4Net(1)-快速建立一个demo
1.下载Log4Net: http://logging.apache.org/log4net/download_log4net.cgi 2.新建一个WinForm程序,取名Log4NetDemo 3. ...
- Linux下部署docker记录(1)-Volume使用
之前部署了Linux下部署docker记录(0)-基础环境安装,接下来看看Docker Volume的使用. Docker volume使用1)一个数据卷是一个特别指定的目录,该目录利用容器的UFS文 ...
- Mac如何找到从AppStore下载的正版Xcode安装包
前言:本文介绍在Mac下如何找到AppStore下载的安装包路径,以及如何提取出来供以后使用,希望对大家有所帮助(前提:想要提取某个安装包,前提是你正在从AppStore安装这个程序.比如你想提取im ...
- Clone Graph leetcode java(DFS and BFS 基础)
题目: Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. ...
- JavaScript事件流原理解析
一.为什么会有这一篇的文章 国庆前几天由于任务比较重,要赶在国庆前把一个进度的任务开发完成,所以也就有点赶,但是却遇到了一个比较奇怪的Bug,导致了任务比预计的延迟了几个小时,对此深表遗憾,所以利用国 ...