当前位置: 首页 > news >正文

XML 语言随笔

XML的含义

XML(eXtensible Markup Language,可扩展标记语言)是一种用于存储和传输数据的标记语言。XML与HTML(HyperText Markup Language,超文本标记语言)类似,但XML的设计目的是描述数据,而HTML的设计目的是显示数据。

1. xml特点

  • 可扩展性:用户可以定义自己的标签来精确描述数据。
  • 自描述性:XML文档包含标签和数据,标签提供了数据的上下文和含义,使得数据易于理解。
  • 平台无关性:XML是纯文本格式,可以在不同的操作系统和应用程序之间交换数据。
  • 层次结构:XML文档使用嵌套的标签来创建数据的层次结构。
  • 有效性验证:可以使用DTD(Document Type Definition,文档类型定义)或XML Schema来                        定义XML文档的结构和规则,从而验证XML文档的有效性。

1.1 注意:

虽然XML功能强大,但其冗长和复杂的语法有时会导致解析和传输效率低下。JSON(JavaScript Object Notation)在某些情况下是XML的一个更轻量级的替代选择。

2.基本结构

  • 文档声明:通常在XML文档的第一行声明XML版本和编码。例如:<?xml version="1.0" encoding="UTF-8"?>
  • 元素(Element):元素是XML文档的基本构建块,由开始标签、内容和结束标签组成。例如:<book>Effective XML</book>
  • 属性(Attribute):属性提供了元素的额外信息,并放在开始标签内。例如:<book genre="computing">Effective XML</book>
  • 注释:注释以<!--开始,以-->结束,不被解析或显示。例如:<!-- This is a comment -->
<?xml version="1.0"?>
<library><book><title>Sandman Volume 1:Preludes and Nocturnes</lib:title><author>Neil Gaiman</lib:author></book><book><title>Good Omens</lib:title><author>Terry Pratchett</lib:author></book><book><title>"Repent, Harlequin!"</lib:title><author>Harlan Ellison</lib:author></book>
</library>

3. 层次标记语言

  • 它允许用户定义自己的标签(tags)
  • 与语义标记语言不同,XML中的每条数据必须括在标签中。
  • 数据封装在标签中,标签嵌套在层次中,该层次包含它封装数据的详细信息
  • 顶层标签是文档的根,封装文档全部内容,每个XML文档只能有一个根。

3.1 名称空间

名称空间提供对标签的引用框架,并且被赋值了一个URL形式的唯一ID,外加用于该名称空间中的标签的一个前缀。如下:

本例创建了一个Library名称空间,他的标识符是http://server.domain.tld/NameSpaces/Library,前缀是lib:,我们可以使用该名称空间创建标签的引用框架。

<?xml version="1.0"?>
<library:library xmlns:lib="http://server.domain.tld/NameSpaces/Library"><!-- xmlns为命名空间的前缀 --><lib:book><lib:title>Sandman Volume 1:Preludes and Nocturnes</lib:title><lib:author>Neil Gaiman</lib:author></lib:book><lib:book><lib:title>Good Omens</lib:title><lib:author>Terry Pratchett</lib:author></lib:book><lib:book><lib:title>"Repent, Harlequin!"</lib:title><lib:author>Harlan Ellison</lib:author></lib:book>
</lib:library>

注意:

  • 一个文档可以拥有和使用多个命名空间,上述示例只展示了一个命名空间
  • 有些名称空间声明前缀是为XML和与其相关的语言预留的,例 xml:xmlns:xsl:...
  • 名称空间的声明可以添加到文档的任意节点
  • 命名空间内对此节点的所有子节点都有效

一组标准

XML只用来存储层次数据工具,NO!记住!它的强大之处在于:

  • 它的可扩展性
  • 附带的一些标准:XSLT、XPath、模式和DTD语言,以及用来查询、链接、描述、显示和操作数据的一系列标准。
    • XSLT:强大的转换引擎,将XML语言转换成其他语言,如HTML、纯文本、PDF...。
    • XPath:描述XML节点集合的查询语言。

1. 模式/DTD语言

文档模型

概念

模式与DTD都是实现文档模型的方法,文档模型用以描述词汇和文档结构,利用它可以定义文档中将要出现的数据元素,元素之间的关系以及元素的数量。

文档模型的用途

处理文档之前,验证它的内容是否符合标准

是否需要?

如果程序本身能够预测即将接收到的数据,那就不需要

文档模型定义

DTD示例--将上述示例中的图书馆XML文档的描述转换为DTD格式:

<!DOCTYPE config SYSTEM "library.dtd">
<!ELEMENT library (book+)>
<!ATTLIST libraryowner CDATA #REQUIRED
>
<!ELEMENT book (title, author+)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>

第一行代码是为了向前面的图书馆文件中添加对DTD的引用,library.dtd为系统DTD路径

  • <!ELEMENT library (book+)>:表明有一个library元素,其含有一个或多个book类型的子元素 
    • 元素频率和元素分组操作符
      1. ? :指定0个或者1个前面出现的元素
      2. +  :指定一个或多个前面出现的元素
      3. ,   :指定一系列元素按此顺序出现
      4. ( ) :将元素组织在一起应用于()外的运算符适用于组内的所有元素
      5. |    :'或'运算符
      6. *   :指定元素出现0次或多次
  • <!ATTLIST library                                         指定图书馆元素有一个属性列表(不断更新)                    owner CDATA #REQUIRED             元素的属性列表                                                      >

注意:

1.属性列表是与图书馆中元素的声明分开的,它与元素的名称链接起来,若元素名称变化,属性列表必须更新以指向新的元素名称

2.本例library只有一个属性,但是属性列表可以包含任意多个属性

3.属性的声明有三个强制元素:属性名称,属性类型和属性描述,其中:

  • 属性类型:DTD规范指定的数据类型,要么是一组允许的值。
  • 属性描述:指定属性的行为。这里可以给出属性的一个默认值。

DTD不全是XML

DTD的局限性

  1. 可借DTD表达复杂的结构,但维护起来很难
  2. 很难在文档模型中清楚表达数值范围
  3. 很难表达任意顺序的一些元素
  4. 不允许为数据指定模式

模式

模式来弥补DTD的不足,可提供基于XML的复杂语言,用以描述文档模型。同时可以清晰得指定数据得类型,使用re正则表达式描述字符数据模式,以及表达例如序列、选择和不受限制的模型的内容模型

模式是纯粹的XML 

示例:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="library"><xs:complexType><xs:sequence><xs:element name="book" maxOccurs="unbounded"><xs:complexType><xs:sequence><xs:element name="title" type="xs:string"/><xs:element name="author" type="xs:string" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element></xs:sequence><xs:attribute name="owner" type="xs:string" use="required"/></xs:complexType></xs:element></xs:schema>

这篇文档1的顶层节点包含一个名称空间声明,指定了以xs:开头的所有标签属于由URL所标识的名称空间。这表明你拥有一个可用于验证模式的文档模型,使用的工具与验证其他XML文档的工具相同。

模式具有层次

pass

XPath

XPath:在XML文档中描述位置与节点集合的语言,XPath表达式包含对某个节点必须匹配的模式的描述。如果该节点匹配此模式,则被选中,否则,被忽略。

相关文章:

XML 语言随笔

XML的含义 XML&#xff08;eXtensible Markup Language&#xff0c;可扩展标记语言&#xff09;是一种用于存储和传输数据的标记语言。XML与HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;类似&#xff0c;但XML的设计目的是描述数据&…...

E卷-分割数组的最大差值

分割数组的最大差值 问题描述 给定一个由若干整数组成的数组 n u m s nums nums,可以在数组内的任意位置进行分割,将该数组分割成两个非空子数组(即左数组和右数组)。分别对子数组求和得到两个值,然后计算这两个值的差值。请输出所有分割方案中,差值的最大值。 输入格…...

基于SpringBoot校园台球厅人员与设备管理系统设计与实现

1.1课题背景与意义 在Internet高速发展的今天&#xff0c;计算机的应用几乎完全覆盖我们生活的各个领域&#xff0c;互联网在经济&#xff0c;生活等方面有着举足轻重的地位&#xff0c;成为人们资源共享&#xff0c;信息快速传递的重要渠道。在中国&#xff0c;网上管理的兴起…...

异步FIFO的实现

异步FIFO是verilog中常见的设计&#xff0c;通常用于不同时钟域下的数据同步。 在实现 FIFO 时&#xff0c;无论是同步 FIFO 还是异步 FIFO &#xff0c;通常会通过双口 RAM &#xff08; Dual Port RAM &#xff09;并添加一些必要的逻辑来实现。双口 RAM的设计如下&#xff1…...

关于找工作的一些感悟

2024年找工作可以说难度十分艰巨&#xff0c;尤其是年底&#xff0c;除了外包公司还在不停的招聘以外&#xff0c;自研的公司基本很少在招聘了。今年有一个很大的感受就是投递了简历可能都没有几个人回复&#xff0c;即使有人回复百分之八十都是拒绝的&#xff0c;拒绝的理由一…...

docker 相关问题记录

docker mysql 一直重启解决办法&#xff08;断电或者重启&#xff09; 一直重启。。因为是内部开发&#xff0c;也没有备份最新的。所以不能删了重来。 方法&#xff1a; docker logs mysql5.7 看到错误跟innodb有关。 具体原因可以参考 http://acuilab.com/articles/2019/1…...

Devops 实践

Devops 实践 基本概念jenkins实践安装jenkins仓库环境准备代码环境准备第一次构建持续集成持续部署集成插件 优秀实践心得体会 参考 摘要&#xff1a;本文首先将介绍一些基本概念&#xff0c;包括Devops&#xff0c;CI/CD等&#xff0c;然后基于知名开源CI/CD工具jenkins进行实…...

MySQL 索引(B+树)详解

MySQL 索引&#xff08;B树&#xff09;详解 MySQL逻辑架构对比InnoDB与MyISAM存储结构存储空间可移植性、备份及恢复事务支持AUTO_INCREMENT表锁差异全文索引表主键表的具体行数CRUD操作外键 sql优化简介什么情况下进行sql优化sql语句执行过程sql优化就是优化索引 索引索引的优…...

医疗系统国产数据库高质量发展路径探析

信息工程人员操作数据库 一、国外数据库在医疗系统中的困境 &#xff08;一&#xff09;数据分散与难以整合 在美国&#xff0c;分散式医疗服务成为癌症研究数据库优化的巨大障碍。患者先在社区接受肿瘤科医生常规检查&#xff0c;再到学术医疗中心进行尖端治疗&#xff0c;然…...

微信小程序报错:http://159.75.169.224:7300不在以下 request 合法域名列表中,请参考文档

要解决此问题&#xff0c;需打开微信小程序开发者工具进行设置&#xff0c;打开详情-本地设置重新运行&#xff0c;该报错就没有啦...

智能租赁管理系统助力规范化住房租赁市场提升用户体验

内容概要 在当今的住房租赁市场中&#xff0c;智能租赁管理系统应运而生&#xff0c;为房东和租客带来了前所未有的便利。这套系统就像一位全能助手&#xff0c;将租赁信息、监管机制以及在线签约功能集成在一起&#xff0c;让整个过程变得流畅而高效。换句话说&#xff0c;您…...

MicroBlaze软核开发(一):Hello World

实现功能&#xff1a;使用 MicroBlaze软核 串口打印 Hello World Vivado版本&#xff1a;2018.3 目录 MicroBlaze介绍 vivado部分&#xff1a; 一、新建工程 二、配置MicroBlaze 三、添加Uart串口IP 四、生成HDL文件编译 SDK部分&#xff1a; 一、导出硬件启动SDK 二、…...

跟着问题学15——GRU网络结构详解及代码实战

1 RNN的缺陷——长期依赖的问题 &#xff08;The Problem of Long-Term Dependencies&#xff09; 前面一节我们学习了RNN神经网络&#xff0c;它可以用来处理序列型的数据&#xff0c;比如一段文字&#xff0c;视频等等。RNN网络的基本单元如下图所示&#xff0c;可以将前面的…...

【uniapp】swiper切换时,v-for重新渲染页面导致文字在视觉上的拉扯问题

问题描述 先用v-for渲染了几个列表&#xff0c;但这几个列表是占同一个位置的&#xff0c;只是通过切换swiper来显示哪个列表显示&#xff0c;也就是为了优化页面切换时候&#xff0c;没有根据swiper的current再更新v-for的数据&#xff0c;但现在就有个问题&#xff0c;怎么隐…...

【Android】Compose初识

文章目录 1.Compose是什么2.Compose优势3.可组合函数4.布局5.配置布局6.Material Design7.列表与动画8.声明式UI9.组合10.重组 1.Compose是什么 Jetpack Compose是谷歌开发的一个现代的、声明式的UI工具包&#xff0c;用于构建原生的Android应用程序界面。它简化了创建复杂用户…...

前端工程化面试题(二)

前端模块化标准 CJS、ESM 和 UMD 的区别 CJS&#xff08;CommonJS&#xff09;、ESM&#xff08;ESModule&#xff09;和UMD&#xff08;Universal Module Definition&#xff09;是前端模块化标准的三种主要形式&#xff0c;它们各自有不同的特点和使用场景&#xff1a; CJS&…...

以攻击者的视角进行软件安全防护

1. 前言 孙子曰&#xff1a;知彼知己者&#xff0c;百战不殆&#xff1b;不知彼而知己&#xff0c;一胜一负&#xff0c;不知彼&#xff0c;不知己&#xff0c;每战必殆。 摘自《 孙子兵法谋攻篇 》在2500 年前的那个波澜壮阔的春秋战国时代&#xff0c;孙子兵法的这段话&…...

008.精读《Apache Paimon Docs - Table w/o PK》

文章目录 1. 引言2. 基本概念2.1 定义2.2 使用场景 3. 流式处理3.1 自动小文件合并3.2 流式查询 4. 数据更新4.1 查询4.2 更新4.3 分桶附加表 5 总结 1. 引言 通过本文&#xff0c;上篇我们了解了Apache Paimon 主键表&#xff0c;本期我们将继续学习附加表&#xff08;Append…...

C#实时监控指定文件夹中的动态,并将文件夹中生成的新图片显示在界面上(相机采图,并且从本地拿图)

结果展示 此类原理适用于文件夹中自动生成图片&#xff0c;并提取最新生成的图片将其显示&#xff0c; 如果你是相机采图将其保存到本地&#xff0c;可以用这中方法可视化&#xff0c;并将检测的结果和图片匹配 理论上任何文件都是可以监视并显示的&#xff0c;我这里只是做了…...

使用SQLark分析达梦慢SQL执行计划的一次实践

最近刚参加完达梦的 DCP 培训与考试&#xff0c;正好业务系统有个 sql 查询较慢&#xff0c;就想着练练手。 在深入了解达梦的过程中&#xff0c;发现达梦新出了一款叫 SQLark 百灵连接的工具。 我首先去官网大致浏览了下。虽然 SQLark 在功能深度上不如 DM Manager 和 PL/SQ…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...

云安全与网络安全:核心区别与协同作用解析

在数字化转型的浪潮中&#xff0c;云安全与网络安全作为信息安全的两大支柱&#xff0c;常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异&#xff0c;并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全&#xff1a;聚焦于保…...

41道Django高频题整理(附答案背诵版)

解释一下 Django 和 Tornado 的关系&#xff1f; Django和Tornado都是Python的web框架&#xff0c;但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架&#xff0c;鼓励快速开发和干净、实用的设计。它遵循MVC设计&#xff0c;并强调代码复用。Django有…...