【XML】XML凭什么是格式严格的?

EXI(Efficient XML Interchange )格式说明 EXI(Efficient XML Interchange)格式以及定义说明 阅读详情

凭什么XML是格式严格的HTML,我就像写HTML一样语法松散地写,又能怎么样?

什么是约束

由于HTML的语法格式松散性,很容易发生各种各样的错误。于是,出现XML,要求开发者在编写时,严格按照语法格式来书写。

在这里插入图片描述
XML中有两种约束技术:

  • DTD约束:语法相对简单,功能也相对简单。
  • Schema约束:语法相对复杂,功能也相对强大。

DTD约束

Document Type Definition,全称为文档类型定义。w3c有此技术的教程!

导入

导入只能出现在第二行,即<?xml version=”1.0” encoding=”utf-8”?>之后。

内部导入:
就是把约束写在本个XML文件里面。只对当前XML有效。
在这里插入图片描述

外部导入
方式一:本地文件系统导入
<!DOCTYPE 根元素 SYSTEM "约束所在的本地位置">

方式二:公共的外部导入
<!DOCTYPE 根元素 PUBLIC "约束所在的网络位置">

DTD约束标签语法

语法格式:

<!ELEMENT 元素名称 类别>  或 <!ELEMENT 元素名称 (元素内容)>

类别:

  1. 空标签: EMPTY。表示元素一定是空元素。
  2. 普通字符串: (#PCDATA)。表示元素的内容一定是普通字符串(不能含有子标签)。
  3. 任何内容: ANY。表示元素的内容可以是任意内容(包括子标签)

在这里插入图片描述

快速理解约束标签写法

<!ELEMENT web-app (servlet*,servlet-mapping*,welcome-file-list?) >
<!-- 含义说明:
	web-app包括三个标签,且必须顺序出现
	servlet:子标签个数任意;
	servlet-mapping:子标签个数任意;
	welcome-file-list:子标签最左只出现一次;
-->

<!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file)) >
<!-- 含义说明:
	servlet有三个子标签,且必须顺序出现
	servlet-name:必须由,且只能出现一次;
	description:可选一次
	servlet-class和jsp-file:二选一,且只能出现一次
-->

DTD约束属性

语法格式:

<!ATTLIST 元素名称 
属性名称 属性类型 默认值(即约束)
属性名称 属性类型 默认值(即约束)
>
  1. 默认值:
#REQUIRED 属性值是必需的 
#IMPLIED   属性不是必需的 
#FIXED value 属性不是必须的,但属性值是固定的
  1. 属性类型:控制属性值的
CDATA :表示普通字符串 
(en1|en2|..): 表示一定是任选其中的一个值
ID:表示在一个xml文档中该属性值必须唯一。值不能以数字开头

完整的DTD约束文件示例

文件名:web-app_2_3.dtd

<?xml version="1.0" encoding="UTF-8"?>
<!--
	传智播客DTD教学实例文档。
	模拟servlet2.3规范,如果开发人员需要在xml使用当前DTD约束,必须包括DOCTYPE。
	格式如下:
	<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
-->
<!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) >
<!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))>
<!ELEMENT servlet-mapping (servlet-name,url-pattern+) >

<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT servlet-class (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT jsp-file (#PCDATA)>

<!ELEMENT welcome-file-list (welcome-file+)>
<!ELEMENT welcome-file (#PCDATA)>

<!ATTLIST web-app version CDATA #IMPLIED>

Schema约束

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

XML Schema比DTD的优势:

  1. XML Schema符合XML语法结构,DOM、SAX等XML API很容易解析出XML Schema文档中的内容。
  2. XML Schema对名称空间支持得非常好。
  3. XML Schema比XML DTD支持更多的数据类型,并支持用户自定义新的数据类型。
  4. XML Schema定义约束的能力非常强大,可以对XML实例文档作出细致的语义限制。
  5. XML Schema不能像DTD一样定义实体,比DTD更复杂,但Xml Schema现在已是w3c组织的标准,它正逐步取代DTD。

Schema特性:

  1. XML Schema 文件自身就是一个XML文件,但它的扩展名通常为.xsd。

  2. 一个XML Schema文档通常称之为模式文档(约束文档),遵循这个文档书写的xml文件称之为实例文档。

  3. 和XML文件一样,一个XML Schema文档也必须有一个根结点,但这个根结点的名称为Schema。

  4. 编写了一个XML Schema约束文档后,通常需要把这个文件中声明的元素绑定到一个URI地址上,在XML Schema技术中有一个专业术语来描述这个过程,即把XML Schema文档声明的元素绑定到一个名称空间上,以后XML文件就可以通过这个URI(即名称空间)来告诉解析引擎,xml文档中编写的元素来自哪里,被谁约束。

名称空间

理解命名空间:

  • 如果一个XML文档中使用了多个Schema文件,而这些Schema文件中定义了相同名称的元素,要使用时就会出现冲突;
  • 就像是一个Java文件中使用了import java.util.*和import java.sql.*时,在使用Date类时,就不确定Date是哪个包下的了;
  • 于是,名称空间就诞生了;
  • 用来处理元素和属性的名称冲突问题,与Java中的包是同一用途;

相关特性:

  1. 作用:告诉xml文档的哪个元素被哪个schema文档约束。 在一个xml文档中,不同的标签可以受到不同的schema文档的约束。
  2. 一个名称空间受到schema文档约束的情况
  3. 多个名称空间受到多个schema文档约束的情况
  4. 默认名称空间的情况
  5. 没有名称空间的情况

完整的Schema约束文件示例

文件名:web-app_2_5.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" 
	targetNamespace="http://www.example.org/web-app_2_5"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:tns="http://www.example.org/web-app_2_5" 
	elementFormDefault="qualified">
	
	<xsd:element name="web-app">
		<xsd:complexType>
			<xsd:choice minOccurs="0" maxOccurs="unbounded">
				<xsd:element name="servlet">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="servlet-name"></xsd:element>
							<xsd:element name="servlet-class"></xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="servlet-mapping">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="servlet-name"></xsd:element>
							<xsd:element name="url-pattern" maxOccurs="unbounded"></xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="welcome-file-list">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="welcome-file" maxOccurs="unbounded"></xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
			</xsd:choice>
			<xsd:attribute name="version" type="double" use="optional"></xsd:attribute>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>

模拟servlet2.5规范,如果开发人员需要在xml使用当前Schema约束,必须包括指定命名空间。
格式如下:

<web-app xmlns="http://www.example.org/web-app_2_5" 
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd"
		version="2.5">
	这里写具体的XML。。。
</web-app>
精通XML、JSON、HTML数据格式化工具 在现代IT行业中,数据格式化工具是日常工作中不可或缺的一部分。数据格式化的目的在于使数据的结构更为清晰、易于阅读和理解。这不仅涉及到数据的可读性提升,还关联着数据交换、数据校验、代码维护等多方面的效率优化。本章节将从格式化工具的基本概念入手,分析其重要性,并探索在不同数据类型下的应用场景。数据格式化工具是一类专门用于处理数据结构和表现形式的程序或应用程序。它们能够将原始数据(如JSON、XML、HTML等)转换为更加整齐和标准化的格式,便于开发者阅读、编辑和调试。 阅读详情

相关推荐

在Pycharm中配置Pyqt5工具(2023年新版教程)

在Pycharm中配置Pyqt5相关的三个工具:QtDesigner、PyUIC、PYRCC

网络技术和Python 2万+

java改缩进格式,JAVA程序生成XML文件的格式规范化,缩进,美化

JAVA程序生成XML文件的格式规范化,缩进,美化。//开始把Document映射到文件TransformerFactory transFactory = TransformerFactory.newInstance();Transformer transFormer = transFactory.newTransformer();transFormer.setOutputProperty(Out...

weixin_33519829的博客 634

LAMMPS实操系列(四): 高熵合金FCC-CoCrCuFeNi的退火模拟

我们对FCC-CoCrCuFeNi的退火模拟思路主要是,首先将材料以均匀的速率用100 ps从300 K升温至1000 K,然后在1000 K的温度下平衡100 ps,随后以均匀的速率用100 ps从1000 K降温至300 K,随后通过共轭梯度下降法做静力学结构优化得到退火后的结构。由于FCC-CoCrCuFeNi高熵合金被认为是潜在的工程结构材料[1],接下来我们将对退火前后的结构进行压缩模拟,对比退火前后FCC-CoCrCuFeNi高熵合金的力学性能变化,敬请各位读者关注我们的更新。

Ceshigo_CD的博客 4837

XML文件的使用及其注意事项

编写注意事项:     所有XML元素都必须有结束标签     XML标签对大小写敏感     XML必须正确嵌套     同级标签以所缩进对齐     元素名称可以包含字母,数字或其他的字符     元素名称不能以数字或者标点符号开始     元素名称中不能含空格     符号          转义符      &lt;        &amp;lt;      &gt;        &...

梦寐的博客 1739

StarUML最新版汉化与破解二合一教程:5分钟搞定永久使用

本文提供StarUML最新版的高效使用指南,涵盖从安装到深度定制的全流程优化方案。包括软件获取最佳实践、界面个性化设置、核心建模技巧、团队协作策略及性能优化建议,帮助架构师和开发团队提升UML建模效率。特别推荐版本控制集成和文档自动化输出方案,适用于各类规模的项目开发。

weixin_42530732的博客 450

DELL Precision T7920加装显卡遇到的坑

文章目录DELL Precision T7920加装显卡服务器原有配置介绍选购过程确认型号确认PCIE x16插槽确认电源功率和电源线安装过程电源模组线不够多单装一个3090显卡尺寸问题加装上1080Ti非常重要!官方文档 DELL Precision T7920加装显卡 实验室由于显卡计算能力不够,以及显卡显存不够,请老师花了大价钱购入了两张GeForce 3090显卡。老师赛高!记录一下这次加装显卡过程中学到的一些知识。 服务器原有配置介绍 服务器原有一张1080Ti显卡,一个16核Xeon CPU。

weixin_45520982的博客 1万+

XML的内容

XML&JSON(8.31&9.01&9.02) XML简介: XML是跨平台的语言,它不需要安装任何环境的语言, 它是所有语言所共有的,单独的语言,并且不是所有语言内部的。 它是让所有语言去和xml交互 。 注意:html前身是xml <></>(整体)这就是标记(标签) 注意点:标签可以随便写(自定义不会报错),所以叫可扩展。 ==》不像Java 很严格。 标记语言 注意点:自定义的标签也不会报错 1.XML定义: 可扩展标记语言(1.标记 2.可扩展)

m0_51945098的博客 3118

【STM32系统】基于STM32设计的锂电池电量/电压检测报警器系统

本设计旨在研究一个基于STM32F103C8T6微控制器的锂电池电量/电压检测报警器系统,应用于便携式电子设备电池管理。系统通过STM32的ADC模块对18650锂电池电压进行采集,利用LCD1602显示模块实时显示电池电压,当检测到电池电量不足或电压异常时,蜂鸣器报警模块会发出警报提醒用户。系统采用简单的硬件结构和优化的软件架构,通过对实际电池电压数据的检测、处理和显示,实现了低功耗、实时监测的锂电池管理功能。本文将介绍系统的设计原理、硬件电路、软件实现以及调试测试过程。

嵌入式阿齐Archie 1万+

【使用分享】一文掌握WordXML,OOXML规范

wordXML的语法,高级操作的实现,遵守ooxml规范

Ry1的博客 9040

innovus:NRDB-2276 special net route layer与NanoRouteMode route layer冲突问题解决方法

NanoRouteMode中设置绕线层次2-6,但是被动到的special net有8-11的preferred route layer,这个层次可能是create_route_type+set_ccopt_property -net_type 定义的。二者绕线层次范围有冲突,导致在调整过这条net后再绕线就会提示失败。然后再下route_design 等route命令去绕别的net。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 1099

全志T527-TP9930-Camera

TP9930 驱动模块主要实现将 4 路的 AHD/TVI/CVBS Camera 的数据转换为 BT656/BT1120 数据,从而实现在 T527 端来对数据进行处理和送显。

Linux驱动开发工程师,熟悉Linux/Android底层驱动、TP、显示、IIC、网络等通用外设调试适配,Linux上层应用开发。常用平台瑞芯微、全志、恩智浦等。 3234

xml中空格换行缩进

常用的XML转义字符记录如下: 空格: string name="out_bound_submit">出  库string> 其中的 就代表空格 连续的空格会被合并为一个空格 换行: string name="hello_world">你好!\n世界!string> 其中的\n就代表换行 缩进: string name="hello_world">你好!\t世界!string>

lqianq86的博客 2327

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

XML 数据格式详解

掌握XML处理技能,能够有效处理各种传统系统和网络设备的数据交换需求。

漫谈网络 2876

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

XML文件格式学习

XML文件格式学习

weixin_51958878的博客 4659

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

XML解析器要求文档内容必须严格符合格式规范

‌MyBatis配置文件‌:在:ml-text[MyBatis]的:ml-text[XML映射文件]中,需特别注意<、>的转义或CDATA使用。‌XHTML/JSF场景‌:JavaScript代码嵌入XML时,需用<h:outputScript>包裹或转义特殊字符。示例:<、>、&等字符直接出现在文本中,未使用实体转义(如<、>、&)。1/、 ‌未转义特殊字符‌。‌2/、标签未正确闭合‌。‌4/、验证XML结构‌。3/、 ‌非法字符位置‌。1/、 ‌转义特殊字符‌。‌3/、检查标签闭合‌。

chinalog的专栏 528

批量格式化XML与JSON文件小工具

摘要 一款基于WPF和.NET 8开发的JSON/XML格式化桌面工具,支持拖拽批量处理文件和目录。主要特性包括:自动内容识别(XML/JSON)、严格格式校验、保留原始编码、多种安全替换策略(回收站/原子替换)、4并发处理能力、会话记忆功能。工具提供可视化界面,支持2/4空格或Tab缩进选择,自动跳过大文件(>100MB)和重复文件,处理结果清晰分类显示。配置文件采用JSON格式,与程序同名存储,支持启动自动处理和窗口居中设置。采用单文件发布方式,依赖.NET 8 Desktop Runtime运行

秋月的私语 1405

你调的接口几乎都返回 JSON,可它凭什么干掉了 XML?

你调过的每一个后端接口,返回的数据几乎都是 JSON。你大概会觉得,这是因为 JSON 在技术上"天生最强"。这个直觉是错的。JSON 能赢,并不靠某项碾压级的技术指标,而是刚好踩中了 Web 开发最在意的三个点:表示更紧凑、语法更简单、生态更广。再往深一层说,是工程效率赢了严谨性。一句话:JSON 把"传输数据"这件事做到了极简,于是 Web 选了它;但凡是"严格、复杂、要文档化"的场合,XML 依然稳坐钓鱼台。

271

java与XML:XML语言语法格式以及解析

java与XML:XML语言语法格式以及解析一、初识XML二、XML语法格式三、XML解析四、JAVA生成XML五、XStream的使用 一、初识XML 简介 可扩展标记语言(extensible Markup Language) 特性:  具有平台无关性,是一门独立的标记语言  具有自我描述性 目的 网络数据传输 数据存储 配置文件 注意 .xml是保存XML的一种方式 xml语言也可以以其他形式存在(比如在内存中构建xml数据) 不要将XML语言狭隘的理解为xml文件 xml与html的区

A-Itfuture的博客 2209

XML格式化

XML格式化工具是一款XML在线解析工具,提供XML格式化、XML压缩功能,格式化后的XML代码有着很高的可读性,颜色高亮显示代码,是程序员必备工具之一。

羊逸羊的博客 688

XML+JSON数据格式

XML是一种可扩展标记语言,主要用于数据存储、传输和框架配置。其文件由文档声明、自定义标签、属性和注释等构成,支持DTD和Schema两种约束方式。XML解析方法包括DOM(内存加载)、SAX(逐行解析)和PULL(Android专用)。JSON是一种轻量级数据交换格式,语法简洁,易于解析和传输。它能与Java对象相互转换,常用工具有hutool和fastjson。JSON支持键值对、数组和嵌套结构,适合复杂数据表示。两种格式各有优势,XML适合结构化配置,JSON更适合数据交换。

2401_84909154的博客 931

XML格式化在线工具

XML格式化工具是一款XML在线解析工具,提供XML格式化、XML压缩功能,格式化后的XML代码有着很高的可读性,颜色高亮显示代码,是程序员必备工具之一。在Web调试完成之后,我们可以将XML文档压缩,加快文本在网络中的传输速度,当然这一点对于加速网络传输效果有限。XML是web中交换和传输数据中最常用的格式之一,很多的web server协议都是基于XML进行定义。在Web调试的过程中,经常需要将一行XML格式的文本格式化一下,使其更加容易阅读,从而更加便于我们调试。

hello world 2848

探索大模型答案质量提升之路:从Markdown到XML格式的转变

尽管Markdown格式的Prompt简洁方便,但有时可能导致大模型误解,无法获得预期答案。为提升大模型的回答质量,建议使用XML格式的Prompt。XML格式通过结构化的标签和属性,能更精确地传达指令,减少歧义,从而显著提高大模型的理解能力和回答准确性。这对于追求高质量内容生成的应用场景尤为重要。首先,标签的选择至关重要。每个标签都应明确代表一个特定的数据元素或结构单元,避免使用模糊或过于宽泛的标签。例如,在生成技术文档时,可以使用<chapter><section>等标签来清晰地表达文档的层次结构。

海为龙世界,云是鹤家乡 1247

PLCOpen XML 格式说明

PLCOpen XML 格式说明 【下载地址】PLCOpenXML格式说明分享 PLCOpen XML 格式说明本仓库提供了一个关于PLCOpen XML格式的资源文件下载 项目地址: https://gitcode.com/Op...

gitblog_06656的博客 636

数据交换格式——XML / JSON

首先我们需要知道数据交换格式是什么? 所谓数据交换格式,就是服务器端与客户端之间进行了数据传输与交换格式 我们前端领域经常提及的俩种数据交换格式分别是XML和JSON,其中XML用的比较少,但XML拥有跨平台、跨语言的优势,JSON比较常用,JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,同XML或HTML片段相比,JSON提供了更好的简单性和灵活性;在Javascript地盘内,JSON毕竟是主场作战,其优势当然要远远优越于xml,并且非常适合于服务器与JavaScri

世界和我们都不该止步于此 1829

python3之格式化文件xml,json

1、结构化文件存储 -xml,json -为了解决不同设备之间信息交换 -参考资料 - -XML(extensibleMarkupLanguage),可以扩展标记语言 -标记语言:语言中使用尖括号括起来的文字字符串标记 -可扩展:用户可以自己定义需要的标记 -例如: <Teacher> 自定义标记Teacher 在...

reb0rn 6488
上一篇: 【XML】什么是XML?
下一篇: 【Servlet】第一个Servlet程序:Hello,Servlet
ALGO阿狗
博客等级 码龄9年 64粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值