【XML】XML基本结构以及XML-Schema约束

XML

简介

1998年2月,W3C正式批准了可扩展标记语言的标准定义,可扩展标记语言可以对文档和数据进行结构化处理,从而能够在部门、客户和供应商之间进行交换,实现动态内容生成,企业集成和应用开发。可扩展标记语言可以使我们能够更准确地搜索内容,更方便地传输内容,更好地描述事物。

什么是可拓展标记语言?

  • 可拓展标记语言是一种很像超文本标记语言的标记语言。
  • 它的设计宗旨是传输数据,而不是显示数据。
  • 它的标签没有被预定义。您需要自行定义标签。
  • 它被设计为具有自我描述性。
  • 它是W3C的推荐标准。

可拓展标记语言和超文本标记语言之间的差异

  • 它不是超文本标记语言的替代。
  • 它是对超文本标记语言的补充。
  • 它和超文本标记语言为不同的目的而设计:
    ——它被设计用来传输和存储数据,其焦点是数据的内容。
    ——超文本标记语言被设计用来显示数据,其焦点是数据的外观。
  • 超文本标记语言旨在显示信息;而XML旨在传输信息,它是独立于软件和硬件的信息传输工具。

可拓展标记语言是W3C的推荐标准

  • XML于1998年2月10日成为W3C的推荐标准。

可拓展标记语言无处不在

  • XML是各种应用程序之间进行数据传输的最常用的工具。

基本结构

话不多说,直接撸代码:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 人力资源管理系统 -->
<hr xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="hr.xsd">
    <employee no="007">
        <name>或无言</name>
        <age>18</age>
        <salary>20000</salary>
        <department>
            <dname>开发部</dname>
            <address>XX大厦-B103</address>
        </department>
    </employee>
    <employee no="008">
        <name>张三</name>
        <age>31</age>
        <salary>30000</salary>
        <department>
            <dname>工程部</dname>
            <address>XX大厦-B104</address>
        </department>
    </employee>
</hr>
  • version="1.0" encoding="UTF-8":说明XML的版本号和编码方式。
  • xmlns:xsi:说明这份文档是使用schema约束。
  • xsi:noNamespaceSchemaLocation:指明schema文件的名字。
  • hr:这份人力资源管理系统文档的根标签。
  • hr、employee、name、age、department等标签都是自己定义的,组成文档的结构。
  • 标签里的是属性,如no="007",在这份文档中的语义为员工的编号。

XML Schema

定义

它的作用是定义一份XML文档的合法组建群,就像文档类型定义(外语缩写:DTD)的作用一样,一份XML Schema定义了:

  • 可以出现在文档里的元素;
  • 可以出现在文档里的属性;
  • 那些元素是子元素;
  • 子元素的顺序和数量;
  • 一个元素是否能包含文本或为空;
  • 元素和属性数据类型;
  • 元素和属性的默认值和固定值;

基本结构

以上文的XML文档为例,它的Schema可以是如下结构:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
    <element name="hr">
        <complexType>
            <sequence>
                <element name="employee" minOccurs="1" maxOccurs="9999">
                    <complexType>
                        <sequence>
                            <element name="name" type="string"></element>
                            <element name="age">
                                <simpleType>
                                    <restriction base="integer">
                                        <minInclusive value="18"></minInclusive>
                                        <maxInclusive value="60"></maxInclusive>
                                    </restriction>
                                </simpleType>
                            </element>
                            <element name="salary" type="integer"></element>
                            <element name="department">
                                <complexType>
                                    <sequence>
                                        <element name="dname" type="string"></element>
                                        <element name="address" type="string"></element>
                                    </sequence>
                                </complexType>
                            </element>
                        </sequence>
                        <attribute name="no" type="string" use="required"></attribute>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>

Schema看起来和XML看起来很像,并且它也是由XML所编写的,描述 XML 文档的结构,Schema中的标签和属性并非自己定义。

  • element name="hr":声明一个名称为hr的根节点。
  • complexType:复杂节点,包含子节点时必须使用这个标签。
  • sequence:序列,其下的所有子节点严格按照顺序书写。
  • minOccurs="1" maxOccurs="9999":当前节点最少出现1次,最多出现9999次。
  • type="integer":只允许使用整型数字。
  • simpleType:简单类型的约束。
  • restriction base="integer":限定只允许使用整型数字。
  • minInclusive value="18":最小值为18。
  • attribute name="no" type="string" use="required":定义属性,这里约束employee元素必须有no这个属性。

总结

年轻人,听我一句劝,一定要好好学英语,不然跟我一样定义个变量都要查单词!(当然我也正在努力。。。)

参考文献:

https://baike.baidu.com/item/%E5%8F%AF%E6%89%A9%E5%B1%95%E6%A0%87%E8%AE%B0%E8%AF%AD%E8%A8%80?fromtitle=xml&fromid=86251

https://baike.baidu.com/item/XML%20Schema

猜你喜欢

转载自www.cnblogs.com/huowuyan/p/11200465.html
今日推荐