【1.9.2】XML与XML Schema

XML是extensible markup language的缩写,是一种使用配对的可嵌套的标签的标记语言。人们用XML将文档结构化,从而可以让机器解读。作为不同应用之间统一的数据交换格式,XML广泛的应用在数据传输上。

一、XML的组成

XML文档 = 序言 + 很多元素 +尾注(可选)

1.1 序言

序言 = XML声明(文档版本号,字符编码) + 外部结构化文档的引用(可选)

一个序言的例子

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

1.2 元素

元素 = 起始标签 + 元素内容 + 结尾标签

一个普通的例子

<lecturer> David Billington </lecturer>

一个空元素(不含元素内容的元素)可以缩写为

<lecturer/>

元素可以有属性,属性是标注在起始标签中的name-value对

一个有属性的标签

<order orderNo="123" date = "2002/7/7"> 
<item>item1</item> 
<\order>

二、XML Schema

一共有两种语言可以定义一个XML文档的结构—DTD和XML Schema。定义XML文档结构的意思是,定义这个文档中需要有什么标签,文档中标签之间的数量关系等。有点相当于类的定义,在一个Schema上可以产生多种XML文件。

2.1 用XML Schema可以做以下几件事

2.1.1 定义可出现在文档中的简单元素

用element定义一个名字为lastname,类型为string的标签

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

2.1.2 定义可出现在文档中的属性

用attribute定义一个名字为lang,类型为string的属性,下面是一个含有这个属性的语句

<lastname lang="EN">Smith</lastname>

下面是对于这个属性的定义

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

2.1.3 定义在文档中出现的复合元素

以下是一个XML复合元素,也就是employee这个元素的内容是其他的元素。

<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>

对于复合元素用complexType定义,复合元素中元素的一些如下所示:

<xs:complexType name="employee">
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
</xs:complexType>

2.1.4 定义元素出现的次序

sequence: 按照定义顺序出现

all: 必须都出现,次序不重要

choice: 选择其中一个出现

2.1.5 定义元素出现的次数

minOccurs: 最少出现次数

maxOccurs: 最大出现次数

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="full_name" type="xs:string"/>
      <xs:element name="child_name" type="xs:string" maxOccurs="10"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

参考资料

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn