XML常用介绍

XML代表可扩展标记语言(eXtensible Markup Language),它是一种类似于HTML的标记语言。XML用于提供数据描述格式,适用于不同应用程序之间的数据交换,而这种交换不依赖于预定义的数据结构集合,从而增强了可扩展性。

XMLHTML区别

  1. HTML主要用于在网络浏览器中显示数据,而XML用于传输和存储结构化数据。
  2. HTML标记不区分大小写,这意味着<tag><TAG>被视为相同,而XML标记严格区分大小写,因此<tag><TAG>被视为不同。
  3. HTML可以有多个根元素,但格式良好的**XML只能有一个根元素**,这意味着所有其他元素必须嵌套在这个单个根元素内。
  4. 在HTML中,空白(如空格、制表符和换行符)会被自动过滤,而在XML中,空白不会被自动过滤,并且会作为数据的一部分保留,除非显式处理。
  5. HTML标记是预定义和标准化的,而XML允许用户根据需要定义自己的标记,使其更具可扩展性,适用于各种应用程序和数据结构。

XML语法

从XML 1.1版本开始,在完整的XML文档中,必须包含XML文档声明,并且该声明必须位于文档的第一行。XML文档声明的语法格式如下:

<?xml version="1.1" encoding="UTF-8"?>
  • version:用于指定符合XML规范的版本号。version属性必须包含在XML声明中,并且必须位于XML声明中的任何其他属性之前。

  • encoding:指定XML文档中使用的编码集。

<?xml version="1.1" encoding="UTF-8"?>
<class><classname>Web程序设计</classname><description>Java Web</description><date>2024-03-11</date><time>10:00</time><duration>2</duration><location>C327</location><instructor>Wang</instructor>
</class>

上述XML代码描述了一个名为“Web程序设计”的课程相关信息。

DTD约束

DTD约束是一种早期的XML约束模式语言,根据其语法创建的文件称为DTD文件。在DTD文件中,可以包含元素的定义、元素之间关系的定义、元素属性的定义,以及实体和符号的定义。

<!ELEMENT class (classname+, description, date, time, duration, location, instructor)>
<!ELEMENT classname (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT time (#PCDATA)>
<!ELEMENT duration (#PCDATA)>
<!ELEMENT location (#PCDATA)>
<!ELEMENT instructor (#PCDATA)>
  1. #PCDATA:表示元素中嵌套的内容是纯文本字符串,其中关键字PCDATA是Parsed Character Data的缩写,表示解析过的字符数据。
  2. 子元素:表示元素包含其他元素。通常用一对小括号()将要嵌套在元素内部的子元素集合括起来。
  3. 混合内容:表示元素可以包含字符数据和子元素。混合内容必须定义为零个或多个。
  4. EMPTY:表示元素既不包含字符数据也不包含子元素,是一个空元素。如果元素本身在文档中有明确的含义,可以在DTD中使用关键字EMPTY来表示空元素。
  5. ANY:表示元素可以包含任何字符数据和子元素。

定义元素时,元素内容可以包含许多符号,不同的符号有不同的作用,下面介绍一些常用符号。

  • 问号[?]:表示对象可以出现0次或1次。

  • 星号[*]:表示对象可以出现0次或多次。

  • 加号[+]:表示对象可以出现1次或多次。

  • 竖线[|]:表示从列出的对象中选择1个。

  • 逗号[,]:表示对象必须按指定顺序出现。

  • 括号[()]:用于分组元素。

Schema约束

与 DTD 一样,XML Schema 也是一种模式语言,用于定义和描述 XML 文档的结构和内容。它的出现克服了 DTD 的局限性。

(1) DTD 使用的是非 XML 语法格式,缺乏对文档结构、元素、数据类型等的全面描述。XML Schema 使用 XML 语法格式,它本身就是 XML 文档,因此 XML Schema 语法格式比 DTD 更容易理解。
(2) XML 对合法性的要求非常高,XML DTD 的描述常常被用作验证 XML 合法性的依据。然而,XML DTD 本身的合法性缺乏良好的验证机制,因此必须独立处理。XML Schema 则不同,它与 XML 具有相同的合法性验证机制。
(3) XML Schema 非常支持命名空间,而 DTDS 几乎不支持命名空间。
(4) DTDS 支持的数据类型非常有限。
(5) DTDS 定义约束的能力非常有限,无法对 XML 实例文档进行更详细的语义限制。

元素定义

语法:

<xs:element name="Name" type="Type"/>

XML Schema内置了许多数据类型,其中最常用的包括以下几种:

  • xs:string:表示字符串类型
  • xs:decimal:表示十进制类型
  • xs:integer:表示整数类型
  • xs:boolean:表示布尔类型
  • xs:date:表示日期类型
  • xs:time:表示时间类型
<xs:element name="classname" type="xs:string"/>
<xs:element name="description" type="xs:string"/>
<xs:element name="date" type="xs:string"/>

简单类型

在 XML Schema 文档中,只包含字符数据的元素属于简单类型。简单类型使用 xs:simpleType 元素定义。如果要限制现有元素内容的类型,则需要使用 xs:restriction 元素。

<xs:element name="duration">
<xs:simpleType><xs:restriction base="xs:integer">< xs:minInclusive  value="2"/>< xs:maxInclusive  value="4"/></xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="instructor">
<xs:simpleType><xs:restriction base="xs:string">< xs:enumeration  value="Wang"/>< xs:enumeration  value="Zhang"/>< xs:enumeration  value="Li"/></xs:restriction>
</xs:simpleType>
</xs:element>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/736716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

产品说明文件的二维码怎么做?扫码看文件在线生成技巧

现在很多企业会把产品说明书的文件做成二维码后&#xff0c;印刷到产品包装或者宣传展板上&#xff0c;让其他人通过扫码来查看说明&#xff0c;有效的提高了用户体验。那么文件二维码制作的方法和步骤可能有很多小伙伴都不太清楚&#xff0c;那么今天小编通过本篇文章来给大家…

城市基础信息管理系统 (VB版电子地图源码/公交车线路图/超市平面图)-143-(代码+程序说明)

转载地址http://www.3q2008.com/soft/search.asp?keyword143 请访问 以下地址,查看最新版本, 新增加支持 建筑物 距离测量, 鸟瞰, 地图放大缩小, VB完善地图扩充程序(城市街道基础信息管理系统 )-362-&#xff08;代码&#xff0b;论文&#xff09; 这套系统印象深刻 因为,写…

[云原生] K8s之ingress

1.Ingress的相关知识 1.1 Ingress的简介 service的作用体现在两个方面&#xff0c;对集群内部&#xff0c;它不断跟踪pod的变化&#xff0c;更新endpoint中对应pod的对象&#xff0c;提供了ip不断变化的pod的服务发现机制&#xff1b;对集群外部&#xff0c;他类似负载均衡器…

VideoDubber时长可控的视频配音方法

本次分享由中国人民大学、微软亚洲研究院联合投稿于AAAI 2023的一篇专门为视频配音任务定制的机器翻译的工作《VideoDubber: Machine Translation with Speech-Aware Length Control for Video Dubbing》。这个工作将电影或电视节目中的原始语音翻译成目标语言。 论文地址&…

软件测试 基础(2)

文章目录 1. 软件测试&软件开发生命周期2. 如何描述一个 BUG3. 如何定义 BUG 的级别4. BUG 的生命周期5. 如何进行第一次测试6. 测试的执行和 BUG 管理7. 产生争执怎么办&#xff08;处理人际关系&#xff09; 1. 软件测试&软件开发生命周期 软件测试的生命周期&#…

Matplotlib图形配置--自定义坐标刻度

文章目录 自定义坐标刻度编程要求代码解释 自定义坐标刻度 虽然matplotlib默认的坐标轴定位器与格式生成器可以满足大部分需求&#xff0c;但是并非对每一幅图都合适。 主次要刻度 学习前最好先对matplotlib图形的对象层级有深入了解。 matplotlib的figure对象是一个盛放图形…

Oracle集群ASM磁盘扩容

先通过lsblk来查看集群两端磁盘是否扩容成功 lsblk -a查看自己两边磁盘UUID是否相同(for i in 后面为磁盘sd后字母名) for i in x y z aa ab ac ad ae do echo "KERNEL\"sd*\", SUBSYSTEM\"block\", PROGRAM\"/lib/udev/scsi_id --whitelist…

Vue 3中的ref:响应式变量的强大工具

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

jeecgboot 开放页面权限,免登录访问

前端需要配置路由和添加白名单 1、配置路由 2、 在permission.js里&#xff0c;把刚才的路由添加到白名单 3、 后端需要把该页面涉及到的接口排除权限拦截 比如我这个页面涉及到两个接口&#xff1a; 那么就在后端的excludeUrls把这两个接口加进去。 前端后端都设置好了&…

PostgreSQL教程(二十九):服务器管理(十一)之高可用、负载均衡和复制

数据库服务器可以一起工作&#xff0c;这样如果主要的服务器失效则允许一个第二服务器快速接手它的任务&#xff08;高可用性&#xff09;&#xff0c;或者可以允许多个计算机提供相同的数据&#xff08;负载均衡&#xff09;。理想情况下&#xff0c;数据库服务器能够无缝地一…

Linux系统运维脚本:检查登录用户是否过多 (比如超过20个),使用uptime,who,cron等命令查看登录用户的数量

目 录 一、问题 二、解决方法 1、通过统计登录用户来发现非法入侵者 2、脚本实现登录用户数超过阈值&#xff0c;给出提醒 3、定期运行脚本&#xff0c;让提醒及时有效 一、问题 Linux的服务器放在公网上&#xff0c;很多人需要访问这个服务器&#xff0c;知道…

AI皮肤测试的基本原理

人工智能测试皮肤的实现原理通常涉及计算机视觉和机器学习技术。以下是一般的实现步骤和原理&#xff0c;涉及数据收集、特征提取、模型训练和优化等多个步骤&#xff0c;利用这些步骤中的技术手段来实现对皮肤状况的识别和分类。北京木奇移动技术有限公司&#xff0c;专业的软…

在用Java写算法的时候如何加快读写速度

对于解决该方法我们一般如下操作&#xff0c;不需要知道为什么&#xff0c;有模板&#xff08;个人观点&#xff09; 使用BufferedReader代替Scanner&#xff1a;Scanner类在读取大量输入时性能较差&#xff0c;而BufferedReader具有更高的读取速度。可以使用BufferedReader的r…

车规芯片为什么需要信息安全(2)

目录 1.车规芯片的信息安全应该从什么地方考虑 1.1 芯片硬件安全防护能力 1.2 车规芯片的信息安全服务

Yolov8将.pt文件转换为tensorRt的.trt文件(模型部署)

我的环境 确保自己已经有cuda和cudnn的环境基础上进行。 cuda:11.7cudnn:适合cuda的版本Anaconda3 [python 3.10]TensorRt-8.6.1 安装TensorRt环境 查看自己的cuda环境&#xff0c;去官网下载适合的win版本。 官网地址 下载后解压&#xff0c;将解压后lib目录添加到环境变…

总结:Spring循环依赖详解与@Lazy注解使用详解

总结&#xff1a;Spring循环依赖详解与Lazy注解使用详解 一前提知识储备&#xff1a;1.Spring Bean生命周期机制&#xff08;IOC&#xff09;2.Spring依赖注入机制&#xff08;DI&#xff09;&#xff08;1&#xff09;Autowired注解标注属性set方法注入&#xff08;2&#xff…

Altium Designer如何对走线模式进行切换

AD软件提供了比较智能的走线模式切换功能&#xff0c;可以根据个人习惯进行切换&#xff0c;能有效的提高了PCB设计效率。 点击界面右上角系统参数的图标 或者在pcb界面中使用快捷键OP进入到优选项界面&#xff0c;然后选中 PCB Editor-Interactive Routing&#xff0c;在布线…

【C++】面向过程与面向对象

文章目录 1. 面向过程与面向对象2. 类&#xff08;class&#xff09;类的作用域 3. 访问限定符封装 4. 类的实例化5. this指针 1. 面向过程与面向对象 C语言是面向过程&#xff08;procedure-oriented&#xff09;的语言&#xff0c;分析出求解问题的步骤&#xff0c;通过函数…

mmdetection如何计算准确率、召回率、F1值

1、训练 python tools/train.py configs/fcos/fcosrdweed3.py 2、测试 这一步要加–outresult.pkl&#xff0c;才能计算准确率和召回率 python tools/test.py configs/fcos/fcosrddweed3.py work_dirs/fcosrddweed3/epoch_300.pth --outresultfcos.pkl3、计算准确率和召回率…

LDA 关键词提取

目录 介绍 主题数确认 代码实现 普通关键词提取 TF-IDF&#xff0c;textRank 实现链接&#xff1a;gensim 实现 TF-IDF&#xff1b;textRank 关键词提取_gensim tfidf关键词-CSDN博客 它们是直接从文本中提取关键词&#xff0c;如果想基于一些潜在语义&#xff0c;可以用 L…