Extensible Markup Language 可扩展标记语言[XML]

视频资料参考自:https://www.bilibili.com/video/BV1B441117Lu?p=186

其他参考:https://www.w3school.com.cn/xml/index.asp

特点:

  可扩展,标签可自定义

功能:

  和HTML大同小异,CSS一样能对XML起效

  但是现在XML的职能主要用于存储数据和作为配置文件使用

  在网络中传输数据

XML & HTML的区别?

  1、XML标签自定义,HTML是预定义的

  2、XML语法严格,HTML语法并不强制要求

  3、XML用来存储数据、HTML用来展示数据

XML基本语法:

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

<users>
<user id = "1">
<name>杰哥</name>
<age>28</age>
<gender>男</gender>
</user> <user id = "1">
<name>阿伟</name>
<age>23</age>
<gender>男</gender>
</user>
</users>

可以被浏览器打开解析

- 1、文件后缀名必须是.xml

- 2、文件的第一行必须定义文档声明,必须是在顶格的位置,不可以挪动到其他行【<?xml version="1.0" encoding="UTF-8" ?>】

- 3、文件有且仅有一个根标签 Root Tag

- 4、标签的属性必须用引号修饰【单引双引都可以】

- 5、不是自闭和标签的情况下,成对标签必须要有结束标签  

- 6、标签名是区分大小写的!

XML的组成部分:

- 1、文档声明

  格式:<?xml 属性列表  ?>

  属性列表:

    version 版本号 1.0 必须属性

    encoding 字符集&编码方式 UTF-8 告知解析引擎当前文档使用的字符集【默认ISO-8859-1】 

    standalone 是否独立 yes/no  yes不依赖其他约束文件,no依赖【即使配置了yes还是可以依赖】

- 2、指令

  可以结合CSS对标签设置样式 <?xml stylesheet typr = "text/css" href = "a.css" ?>

- 3、标签:标签名称自定义

  1、不可以数字开头作为首标识符

  2、包含字母、数字、下划线或者其他字符

  3、不能包含空格

  4、不能以XML、Xml、xml开始作为首标识符

- 4、属性

  id的属性值必须唯一,等同HTML的id属性

- 5、文本

  CDATA区域:该区域的数据会被原样展示

<![CDATA[ a < b ? true or false ]]>

XML的约束 DTD & Schema:

什么是约束,即规定XML的书写规则

目标:

  - 能够在xml文件中引入约束

  - 能够简单的读懂文档

约束的分类:

  - DTD约束,一种简单的约束规范

  - Schema约束,以种复杂的约束规范

- 1、DTD约束:

我们声明了一个DTD的约束文档【Student.dtd】

<!-- !ELEMENT 规定XML文档中的标签元素 -->
<!-- students 声明了一个标签,标签名是students -->
<!-- students标签声名,可允许放置(0~N)个子标签student -->
<!-- *表示任意个数 +表示一个以上 -->
<!ELEMENT students (student*)> <!-- 声明student标签 且可放置三个子标签,分别是name,age,gender。 -->
<!-- 这些子标签没有加量词通配符,所以每个子标签在xml必须出现一次(有且仅有一次) -->
<!-- 这些子标签出现的顺序也要和这个声明的顺序一致 -->
<!ELEMENT student (name,age,gender)> <!-- (#PCDATA) 声明这些标签的元素内容只能是字符串了 -->
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT gender (#PCDATA)> <!-- !ATTLIST声明了一个属性 给student声明的 -->
<!-- 属性名称是number 属性的类型是ID #REQUIRED表示此属性是必填项 -->
<!-- ID属性表示每一个标签的ID值是唯一的,不可重复 -->
<!ATTLIST student number ID #REQUIRED>

在XML文件中引入此约束,外部dtd文件引入【Student.xml】

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

<!-- 本地dtd文件引入 -->
<!-- !DOCTYPE 文档声明 -->
<!-- students表示根标签名 -->
<!-- SYSTEM 在本地中获取-->
<!-- "Student.dtd" 表示引入的dtd文件位置 -->
<!DOCTYPE students SYSTEM "Student.dtd"> <!-- 网络外部 dtd引入 -->
<!-- <!DOCTYPE 根标签名 PUBLIC "dtd文件名" "dtd文件的URL位置"> -->
<students>
<student number="S001">
<name>杰哥</name>
<age>29</age>
<gender>male</gender>
</student> <student number="S002">
<name>阿伟</name>
<age>18</age>
<gender>male</gender>
</student>
</students>

使用内部引入dtd约束

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

<!DOCTYPE students[
<!ELEMENT students (student*)>
<!ELEMENT student (name,age,gender)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT gender (#PCDATA)>
<!ATTLIST student number ID #REQUIRED>
]>
<students>
<student number="S001">
<name>杰哥</name>
<age>29</age>
<gender>male</gender>
</student> <student number="S002">
<name>阿伟</name>
<age>18</age>
<gender>male</gender>
</student>
</students>

- 2、Schema约束:

https://www.w3school.com.cn/schema/index.asp

-  Schema约束文件的后缀名是.xsd

- 一般不用自己手写Schema

只需要看懂和会引入约束  https://www.w3school.com.cn/schema/schema_howto.asp

XML的解析方式:

 1、DOM  【解析思想?服务器】

    将xml文档一次性加载进内存,在内存中解析出一个DOM树,每一个标签既是一个节点【node】

    操作方便快速、可进行CRUD操作、但是xml内容过多,非常占用内存资源

 2、SAX  【解析思想?客户端】

    逐行读取、基于事件驱动,相比DOM是不占用内存资源的

    功能有限,仅读取,不能增删改

  

【XML】Extensible Markup Language 可扩展标记语言的更多相关文章

  1. 原始的Ajax方法 (异步的 JavaScript 和 XML -- (Extensible Markup Language 可扩展标记语言))

    <script language="javascript" type="text/javascript"> var request = false; ...

  2. XML EXtensible Markup Language

    1.基础:XML设计被用来传输和存储数据:全称是EXtensible Markup Language.它的设计宗旨是传输数据,而不是显示数据.xml的标签没有被预定义,需要由用户自行定义标签.xml被 ...

  3. XML 概述 (可扩展标记语言)

    XML:eXtensible Markup Language  可扩展标记语言 概念:可扩展:xml中所有的标签都是自定义的.没有预定义的.        功能:            存储数据   ...

  4. 关于XML(可扩展标记语言)的基础知识与写法------2017-05-18

    XML(Extensible Markup Language) HTML:超文本标记语言,主要用来展示   XML:可扩展标记语言,用来做数据传输XML特点: 1.树状结构,有且只有一个根 2.标签名 ...

  5. 关于XML(可扩展标记语言)的基础知识与写法

    XML(Extensible Markup Language) HTML:超文本标记语言,主要用来展示   XML:可扩展标记语言,用来做数据传输XML特点:1.树状结构,有且只有一个根2.标签名自定 ...

  6. 《计算机是怎么跑起来的》第十章 XML(可扩展标记语言)

    资料来源 (1) <计算机是怎么跑起来的> 注1:XML是Extensible Markup Language(可扩展标记语言)的缩写; 1.XML是标记语言 (1) 通常把通过添加标签为 ...

  7. 12XML(可扩展标记语言)

    XML:eXtensible Markup Language 什么是标记语言?什么是标记? 标记(Markup):文档中任何不想被打印输出的部分(不是真正的文档内容,联想读书时做的“读书笔记”,在旁边 ...

  8. 可扩展标记语言XML之一:XML的概念、作用与示例

    哈喽大家好啊,乐字节小乐又来给大家分享Java技术文章了.上次已经讲完了Java多线程相关知识(可以看我博客文章), 这次文章将讲述可扩展标记语言XML 一. 标记语言 标记语言,是一种将文本(Tex ...

  9. XML简介——可扩展标记语言(Extensible Markup Language)

    (What) XML是什么? XML指可扩展标记语言(Extensible Markup Language) 1.  XML是一种标记语言,类似HTML. 2.  XML具有自我描述性 3.  XML ...

  10. java XML(可扩展标记语言)

    XML 是EXtensible Markup Language的缩写,它是一种类似于HTML的标记语言,称为可扩展标记语言,传输数据而不是显示数据,可以自定义标签,具有自我描述性是一种通用的数据交换格 ...

随机推荐

  1. 面试必会->Redis篇

    01- 你们项目中哪里用到了Redis ? 在我们的项目中很多地方都用到了Redis , Redis在我们的项目中主要有三个作用 : 使用Redis做热点数据缓存/接口数据缓存 使用Redis存储一些 ...

  2. 数据结构之栈(Java,C语言的实现)以及相关习题巩固

    目录 栈 概念以及代码实现 例题 232. 用栈实现队列 1614. 括号的最大嵌套深度 234. 回文链表 1614. 括号的最大嵌套深度 LCR 123. 图书整理 I 206. 反转链表 402 ...

  3. [SHOI2011]双倍回文 题解

    [SHOI2011]双倍回文 题解 看了一些写回文自动机的大佬的代码,我深感敬畏,于是我转身向Manacher走去 现在荣登最优解第一页-- 说实话,这个方法的复杂度是很玄学的,但是加了一些优化之后, ...

  4. Asp .Net Core 系列:详解鉴权(身份验证)以及实现 Cookie、JWT、自定义三种鉴权 (含源码解析)

    什么是鉴权(身份验证)? https://learn.microsoft.com/zh-cn/aspnet/core/security/authentication/?view=aspnetcore- ...

  5. Docker入门系列之四:Docker镜像

    在本文中,您将学习如何加快Docker构建周期并创建轻量级镜像.遵循之前的文章中的食物隐喻,我们将沙拉隐喻为Docker镜像,同时减少Docker镜像的数量. 在本系列的第3部分中,我们介绍了十几个D ...

  6. 前端使用 Konva 实现可视化设计器(15)- 自定义连接点、连接优化

    前面,本示例实现了折线连接线,简述了实现的思路和原理,也已知了一些缺陷.本章将处理一些缺陷的同时,实现支持连接点的自定义,一个节点可以定义多个连接点,最终可以满足类似图元接线的效果. 请大家动动小手, ...

  7. Spring AOP 中@Pointcut的用法(多个Pointcut)

    Spring AOP 中@Pointcut的用法(多个Pointcut) /** swagger切面,分开来写 **/ @Aspect @Component public class ApiOpera ...

  8. SDL3 入门(3):三角形

    SDL3 提供了 SDL_RenderGeometry 函数绘制几何图形,用法和 OpenGL 差不多,先定义顶点数据,然后根据顶点数据绘制几何图形. 绘制三角形的代码如下: std::array&l ...

  9. 配置 Nginx + PHP(FastCGI/FPM)

    有关概念 Nginx是什么 Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器. Php-fpm是什么 1.c ...

  10. 机器学习(三)——K最临近方法构建分类模型(matlab)

    K最临近(K-Nearest Neighbors,KNN)方法是一种简单且直观的分类和回归算法,主要用于分类任务.其基本原理是用到表决的方法,找到距离其最近的K个样本,然后通过K个样本的标签进行表决, ...