• 【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/可扩展标记语言?fromtitle=xml&fromid=86251

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

  • 相关阅读:
    关于VS中更改栈和堆空间的大小
    BS模式的模型结构详解
    友情链接
    [ThinkPHP] 比较标签 neq&nheq 与 PHP 中的 != 与 !== 出现的问题
    [个人思考] 裸泳的问题
    [label][Chrome-Extension] How to start Chrome Extension's development
    [label][OS] 制作 U 盘安装 Windows 7
    [label][Google-Developers] Your First Multi Screen Site
    Min Stack
    Implement Stack using Queues
  • 原文地址:https://www.cnblogs.com/huowuyan/p/11200465.html
Copyright © 2020-2023  润新知