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

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

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文件中,可以包含元素的定义、元素之间关系的定义、元素属性的定义,以及实体和符号的定义。

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 实例文档进行更详细的语义限制。

元素定义

语法:

xml 复制代码
<xs:element name="Name" type="Type"/>

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

  • xs:string:表示字符串类型
  • xs:decimal:表示十进制类型
  • xs:integer:表示整数类型
  • xs:boolean:表示布尔类型
  • xs:date:表示日期类型
  • xs:time:表示时间类型
xml 复制代码
<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 元素。

xml 复制代码
<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>
xml 复制代码
<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>
相关推荐
小行星1254 分钟前
前端把dom页面转为pdf文件下载和弹窗预览
前端·javascript·vue.js·pdf
武子康12 分钟前
大数据-230 离线数仓 - ODS层的构建 Hive处理 UDF 与 SerDe 处理 与 当前总结
java·大数据·数据仓库·hive·hadoop·sql·hdfs
Lysun00114 分钟前
[less] Operation on an invalid type
前端·vue·less·sass·scss
武子康14 分钟前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql
苏-言20 分钟前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
界面开发小八哥28 分钟前
更高效的Java 23开发,IntelliJ IDEA助力全面升级
java·开发语言·ide·intellij-idea·开发工具
J总裁的小芒果29 分钟前
Vue3 el-table 默认选中 传入的数组
前端·javascript·elementui·typescript
Lei_zhen9632 分钟前
记录一次electron-builder报错ENOENT: no such file or directory, rename xxxx的问题
前端·javascript·electron
咖喱鱼蛋34 分钟前
Electron一些概念理解
前端·javascript·electron
yqcoder35 分钟前
Vue3 + Vite + Electron + TS 项目构建
前端·javascript·vue.js