XML—DTD、 Schema
目录
DTD是什么?
DTD有什么用途?
DTD与XML有什么联系?
DTD原理图
外部DTD
DTD文件book.dtd:
使用外部DTD文件的XML文件
PCDATA
XML 文档构建模块
一、元素
1、元素声明
①、有元素:
②、空元素:
③、ANY带有任何内容元素:
2、定义某个标签内元素个数(利用一些符号标识)
声明只出现一次的元素
声明最少出现一次的元素
声明出现零次或多次的元素
声明出现零次或一次的元素
声明或
声明混合型的内容
二、属性(ATTLIST)
①、语法:
②、类型
③、默认值
三、实体
内部实体声明
外部实体声明
四、命名空间
前缀标识法
Schema是什么?
为什么说Schema比DTD更强大呢(进步在哪儿了)?
使用有什么好处吗?
有哪些特点?
有哪些用途?
可保护数据通信
可扩展的,因为它们由XML编写通过可扩展的Schema定义,可以:
如何使用Schema?
验证XML是否符合Schema
DTD是什么?
Document Tye Definition,文档类型定义
DTD有什么用途?
它使用一系列合法的元素来定义文档的结构。
为xml文件提供语法与规则(方便数据共享,形成规则,大家读的时候都按xml文件读取)
PS:简而言之,DTD就是用来约束XML文档的,使其在一定的规范下使用,除了DTD技术外,还有Schema技术,也是用于约束XML文档的。
DTD与XML有什么联系?
DTD为XML文件提供语法与规则。我们知道XML的标记是可以自定义,每个人定义的不同,那进行数据共享的时候如何让别人看得懂呢?在编写XML的时候按照DTD来规范格式,比方说某个元素只能出现一次、各个子元素的顺序……这样形成规则,大家共享的时候都按xml文件读取
DTD原理图
外部DTD
DTD与XML的内容分别在不同的文件中:
DTD文件book.dtd:
<?xml Version="1.0" encoding="utf-8"> version:版本 encoding:文件使用的字符编码方法
<!ELEMENT 书籍列表(计算机书籍)*>
<!ELEMENT 计算机书籍(书名,价格,简要介绍)> 计算机书籍元素有3个元素:书名、价格、简要介绍
<!ELEMENT 书名(#PCDATA)> 子元素单独定义,书名元素为"#PCDATA" 类型
<!ELEMENT 价格(#PCDATA)>
<!ELEMENT 简要介绍(#PCDATA)>
使用外部DTD文件的XML文件
<?xml version="1.0" encoding="utf-8">
<!DOCTYPE 书籍列表 SYSTEM “book.dtd">
PCDATA
PCDATA 的意思是被解析的字符数据(parsed character data)。
可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。
PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。
文本中的标签会被当作标记来处理,而实体会被展开。
不过,被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &、< 以及 > 实体来分别替换它们。
XML 文档构建模块
一、元素
1、元素声明
①、有元素:
<!ELEMENT 元素名称 类别>或<!ELEMENT 元素名称 (元素内容)>
<!ELEMENT 书名(#PCDATA)>
<!ELEMENT 计算机书籍(书名,价格,简要介绍)>
②、空元素:
<!ELEMENT 元素名称 EMPTY>
DTD中:<!ELEMENT br EMPTY>
XML中:<br/>
③、ANY带有任何内容元素:
<!ELEMENT 元素名称 ANY>
DTD中:<!ELEMENT student ANY>
XML中:<student>刘伟</student><student><name>刘伟</name></student>
2、定义某个标签内元素个数(利用一些符号标识)
声明只出现一次的元素
<!ELEMENT 元素名(子元素名称)>
举例:<!ELEMENT 书籍列表(计算机书籍)>
声明最少出现一次的元素
<!ELEMENT 元素名(子元素名称+)>
举例:<!ELEMENT 书籍列表(计算机书籍+)>
重复元素例子:
DTD中:
<!ELEMENT 书籍列表(书名,作者+)>
<!ELEMENT 书名(#PCDATA)>
<!ELEMENT 作者(#PCDATA)>XML中:
<书籍列表><计算机书籍><书名>J2EE教程</书名><作者>张三</作者><作者>李四</作者></计算机书籍>
</书籍列表>
成组元素例子:
DTD中:
<!ELEMENT 书籍列表(书名,价格)+>
<!ELEMENT 书名(#PCDATA)>
<!ELEMENT 价格(#PCDATA)>XML中:
<书籍列表><计算机书籍><书名>J2EE教程</书名><价格>100</价格><书名>XML教程</书名><价格>50</价格></计算机书籍>
</书籍列表>
声明出现零次或多次的元素
<!ELEMENT 元素名(子元素名称*)>
举例:<!ELEMENT 书籍列表(计算机书籍*)>
声明出现零次或一次的元素
<!ELEMENT 元素名(子元素名称?)>
举例:<!ELEMENT 书籍列表(计算机书籍?)>
声明或
<!ELEMENT 元素名(子元素名称|子元素名称2)>
举例:<!ELEMENT 书籍列表(计算机书籍|文学书籍)>
声明混合型的内容
<!ELEMENT 子元素名称(#PCDATA|子元素名称)*>
举例:<!ELEMENT 书籍列表(#PCDATA|计算机书籍)*>
PS:子元素要求顺序。
二、属性(ATTLIST)
①、语法:<!ATTLIST 元素名称 属性名称 属性类型 默认值>
DTD文件中:
<!ATTLIST payment type CDATA "cash">XML文件中:
<payment type="cash/>或
<payment/>
②、类型
③、默认值
三、实体
- 实体是用于定义引用普通文本或特殊字符的快捷方式的变量
- 实体引用是对实体的引用
- 实体可在内部或外部进行声明
内部实体声明
<!ENTITY 实体名称 SYSTEM "URI/URL">
DTD文件中:
<!ENTITY writer "Bill Gates">
<!ENTITY copyright "Copyright jobedu.com.cn">
XML文件中:
<author>&writer;©right;</author>
外部实体声明
<!ENTITY 实体名称 "实体的值">
DTD文件中:
<!ENTITY writer SYSTEM "http://www.jobedu.com.cn/dtd/person.dtd">
XML文件中:
<author>&writer</author>
四、命名空间
在一个XML文档中,包含由多个DTD描述的元素。会出现名称冲突问题。
为了解决名称冲突问题,W3C的XML小组制定了被称为命名空间(NameSpace)的标准
前缀标识法
即在元素名和属性名前面增加一个标识,以唯一区分当前元素或属性来自哪一个DTD。
Schema是什么?
XML Schema Definitior(XSD)
XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。是基于XML的DTD替代者,要比DTD更强大
描述XML文档的结构,使用XML语法,自身也是XML文件的,规定XML元素顺序等等
为什么说Schema比DTD更强大呢(进步在哪儿了)?
- XML Schema 可针对未来的需求进行扩展
- XML Schema 更完善,功能更强大
- XML Schema 基于 XML 编写
- XML Schema 支持数据类型
- XML Schema 支持命名空间
使用有什么好处吗?
不必学习新的语言
可使用XML编辑器来编辑Schema文件
可使用XML解析器来解析Schema文件
有哪些特点?
- 定义可出现在文档中的元素
- 定义可出现在文档中的属性
- 定义哪个元素是子元素
- 定义子元素的次序
- 定义子元素的数目
- 定义元素是否为空,或者是否可包含文本
- 定义元素和属性的数据类型
- 定义元素和属性的默认值以及固定值
有哪些用途?
可保护数据通信
- 当数据从发送方被发送到接收方时,其要点是双方应有关于内容的相同的“期望值”
- 通过Schema,发送方可以用一种接收方能够明白的方式来描述数据
- 一种数据,比如“03-11-2004”,在某些国家被解释为11月3日,而在另一些国家为当作3月11日
- 但是一个带有数据类型的XML元素,比如:<data type="date">2004-03-11</date>,可确保对内容一致的理解,这是因为XML的数据类型“date”要求的格式是“YYYY-MM-DD”
可扩展的,因为它们由XML编写通过可扩展的Schema定义,可以:
- 在其他Schema中重复使用您的Schema
- 创建由标准类型衍生而来的您自己的数据类型
- 在相同的文档中引用多重的Schema
如何使用Schema?
验证XML是否符合Schema
IE不能验证XML是否符合Schema
email.xsd文件中
<?xml version="1.0 encoding="UTF-8>
<schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:complexType><xs:sequence><xs:element name="to" type="xs:string"></xs:element><xs:element name="from" type="xs:string"></xs:element><xs:element name="title" type="xs:string"></xs:element><xs:element name="body" type="xs:string"></xs:element><xs:element name="date" type="xs:string"></xs:element></xs:sequence></xs:complexType>
</schema>
email.xml文件中
<?xml version="1.0 encoding="UTF-8>
<email xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceShemaLocation="email.xsd"><to>liuwei9999@163.com</to><from>hellokitty@163.com</from><title>about loving</title><body>I Love you forever</body><date>2008-11-12</date>
</email>
相关文章:

XML—DTD、 Schema
目录 DTD是什么? DTD有什么用途? DTD与XML有什么联系? DTD原理图 外部DTD DTD文件book.dtd: 使用外部DTD文件的XML文件 PCDATA XML 文档构建模块 一、元素 1、元素声明 ①、有元素: ②、空元素: ③、ANY…...

基于web的仓库管理系统jsp商品进销存java源代码Mysql
本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于web的仓库管理系统 系统有2权限:管理…...

GitLab启动失败:fail: alertmanager: runsv not running
问题描述 sudo gitlab-ctl restart ,报错如下 : summergaoubuntu:/etc/gitlab$ sudo gitlab-ctl start fail: alertmanager: runsv not running fail: gitaly: runsv not running fail: gitlab-exporter: runsv not running fail: gitlab-workhorse: …...

JVM核心原理解读(一)---执行引擎
Java虚拟机规范制定了Java字节码执行引擎的概念模型,Java执行引擎作用概括起来就是执行编译产生的Java class文件,为用户提供了底层OS的调用,屏蔽了不同平台硬件和OS的差异性,使得编写的代码无差别的在各个平台运行;对于Java字节码执行一般有解释执行和编译执行两种,具体使用哪…...

Docker:Harbor 私有仓库迁移
Harbor 私有仓库迁移 一.私有仓库迁移的介绍 1.为何要对Harbor 私有仓库的迁移 (1)硬件升级或更换:如果源 Harbor 在旧的硬件设备上运行,并且计划将其迁移到新的硬件设备上,那么需要执行迁移操作。 (2&…...

(六)k8s实战-存储管理
一、Volumes 1、HostPath 【使用场景:容器目录 挂载到 主机目录】 【可以持久化到主机上】 将节点上的文件或目录挂载到 Pod 上,此时该目录会变成持久化存储目录,即使 Pod 被删除后重启,也可以重新加载到该目录,该目…...

ChatGPT Prompting开发实战(二)
一、基于LangChain源码react来解析prompt engineering 在LangChain源码中一个特别重要的部分就是react,它的基本概念是,LLM在推理时会产生很多中间步骤而不是直接产生结果,这些中间步骤可以被用来与外界进行交互,然后产生new con…...

Android屏幕适配(5) — 最小宽度smallWidth适配
概述 最小宽度smallWidth适配实现屏幕适配方案 详细 前言 在之前的文章中,我们讲到了Android屏幕适配的一些知识,大家感兴趣的话可参考Android屏幕适配(1) — 概念解释Android屏幕适配(2) — drawable与mipmapAndroid屏幕适配(3) — 资源文件夹命名与…...

详细介绍如何基于ESP32实现低功耗的电子纸天气显示器--附完整源码
实现界面展示 这是一款天气显示器,由支持 wifi 的 ESP32 微控制器和 7.5 英寸电子纸(又名电子墨水)显示器供电。当前和预测的天气数据是从 OpenWeatherMap API 获取的。传感器为显示屏提供准确的室内温度和湿度。 该项目在睡眠时消耗约 14μA,在约 10 秒的清醒期…...

DC电源模块不同的尺寸可以适应实际应用场景
BOSHIDA DC电源模块不同的尺寸可以适应实际应用场景 DC电源模块是现代电子设备的必备部件之一,其可提供稳定的直流电源,保证电子设备正常运行。DC电源模块尺寸的选择直接影响到其适应的应用场景及其性能表现。本文将从尺寸方面分析DC电源模块的适应性&a…...
@XmlType,@XmlRootElement,@XmlAttribute的作用与区别
XmlType、XmlRootElement 和 XmlAttribute 都是 Java 标准库中 javax.xml.bind.annotation 包提供的注解,用于在使用 JAXB(Java Architecture for XML Binding)或其他 XML 绑定技术时,控制 Java 类与 XML 数据之间的映射关系。 它…...

安装虚拟机
软硬件准备 软件:推荐使用VMwear,我用的是VMwear 12 镜像:CentOS7 ,如果没有镜像可以在官网下载 :http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso 硬件:因为是在宿主机上运行虚拟…...

(动态规划) 剑指 Offer 48. 最长不含重复字符的子字符串 ——【Leetcode每日一题】
❓剑指 Offer 48. 最长不含重复字符的子字符串 难度:中等 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为…...

【文心一言】如何申请获得体验资格,并简单使用它的强大功能
目录 一、文心一言1.1、它能做什么1.2、技术特点1.3、申请方法 二、功能体验2.1、文心一言2.2、写冒泡排序代码 测试代码2.3、画一个爱心2.4、画一个星空 三、申请和通过3.1、申请时间3.2、通过时间 文心一言,国内首个大型人工智能对话模型,发布已经快一…...

1. 卷积原理
① 卷积核不停的在原图上进行滑动,对应元素相乘再相加。 ② 下图为每次滑动移动1格,然后再利用原图与卷积核上的数值进行计算得到缩略图矩阵的数据,如下图右所示。 import torch import torch.nn.functional as Finput torch.tensor([[1, 2…...

pandas读取excel,再写入excel
需求是这样的,从一个表读取数据,然后每次执行创建一个新表将值写入 读取这个表 写入到这个表 分别对应的是e、h列数据,代码如下: import pandas as pd import openpyxl import datetime dfpd.read_excel(rC:\Users\admin\Deskt…...

【React学习】—React中的事件绑定(八)
【React学习】—React中的事件绑定(八) 一、原生JS <body><button id"btn1">按钮1</button><button id"btn2">按钮2</button><button onclick"demo()">按钮3</button><scr…...
记录在ubuntu 18.04系统上安装虚拟机的过程
- 下载ubuntu镜像 ubuntu镜像下载地址 我下载的是desktop桌面版,比较好操作。 - 烧录 我用的Mac,使用的是balenaEtcher软件进行磁盘烧录。 balenaEtcher下载地址 如果出现磁盘损坏或者无法再次使用,参考这里解决:进入 - 安…...

C/C++ 个人笔记
仅供个人复习, C语言IO占位符表 %d十进制整数(int)%ldlong%lldlong long%uunsigned int%o八进制整型%x十六进制整数/字符串地址%c单个字符%s字符串%ffloat,默认保留6位%lfdouble%e科学计数法%g根据大小自动选取f或e格式,去掉无效0 转义符表…...

Stm32的时钟系统以及使用SysTick滴答定时器实现延时
前言 STM32的时钟系统由多个时钟源和时钟树组成时钟源包括主时钟源(HSE)、内部高速时钟源(HSI)、内部低速时钟源(LSI)和外部低速时钟源(LSE)。时钟树由多个时钟分频器和时钟门控器组…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...
拟合问题处理
在机器学习中,核心任务通常围绕模型训练和性能提升展开,但你提到的 “优化训练数据解决过拟合” 和 “提升泛化性能解决欠拟合” 需要结合更准确的概念进行梳理。以下是对机器学习核心任务的系统复习和修正: 一、机器学习的核心任务框架 机…...
2.2.2 ASPICE的需求分析
ASPICE的需求分析是汽车软件开发过程中至关重要的一环,它涉及到对需求进行详细分析、验证和确认,以确保软件产品能够满足客户和用户的需求。在ASPICE中,需求分析的关键步骤包括: 需求细化:将从需求收集阶段获得的高层需…...