当前位置: 首页 > 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…...

从零到一:基于GitHub Pages与Jekyll搭建你的专属学术主页

1. 为什么选择GitHub Pages Jekyll搭建学术主页&#xff1f; 作为一个长期在学术界摸爬滚打的老兵&#xff0c;我见过太多同行花大价钱购买服务器和维护网站&#xff0c;结果最后因为各种技术问题半途而废。直到我发现GitHub Pages和Jekyll这对黄金组合&#xff0c;才真正找到…...

零基础玩转OpenClaw:Qwen3-32B-Chat镜像云端体验指南

零基础玩转OpenClaw&#xff1a;Qwen3-32B-Chat镜像云端体验指南 1. 为什么选择云端体验OpenClaw&#xff1f; 第一次听说OpenClaw时&#xff0c;我正被各种本地部署的依赖项折磨得焦头烂额。作为一个习惯在MacBook上写代码的开发者&#xff0c;光是配置CUDA环境就让我望而却…...

OpenClaw开发辅助:Qwen3.5-9B实现日志分析与错误自动修复

OpenClaw开发辅助&#xff1a;Qwen3.5-9B实现日志分析与错误自动修复 1. 为什么需要AI辅助日志分析&#xff1f; 每次凌晨被报警短信吵醒&#xff0c;盯着密密麻麻的日志文件找异常时&#xff0c;我都会想&#xff1a;如果能有个AI助手帮我自动分析日志、定位问题甚至尝试修复…...

MATPOWER电力系统仿真实践手册:从安装到应用的全面指南

MATPOWER电力系统仿真实践手册&#xff1a;从安装到应用的全面指南 【免费下载链接】matpower MATPOWER – steady state power flow simulation and optimization for MATLAB and Octave 项目地址: https://gitcode.com/gh_mirrors/ma/matpower MATPOWER是一款专为MATL…...

咱们今天来唠唠机器人轨迹规划那点事儿。不少小伙伴在玩机械臂的时候总会遇到关节空间和笛卡尔空间轨迹规划的抉择困难症,这俩货到底有什么区别?直接上硬核代码

matlab笛卡尔空间和关节空间轨迹规划 关节空间机器臂多项式轨迹规划定做&#xff0c;353和333多项式轨迹规划和优化关节空间规划有个大杀器——多项式插值。比如要让机械臂从A点平滑运动到B点&#xff0c;咱们可以玩三次多项式&#xff08;3-3-3&#xff09;或者五次多项式&…...

python-flask-djangol框架的膳食营养食谱管理系统

目录需求分析技术选型数据库设计核心功能实现界面设计测试与部署维护与扩展项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作需求分析 膳食营养食谱管理系统需要具备用户管理、食谱管理、营养分析、购物清单生成等功能。系统应支…...

利用快马平台十分钟搭建树莓派环境监测系统原型

今天想和大家分享一个快速搭建树莓派环境监测系统的小实验。作为一个硬件爱好者&#xff0c;我经常用树莓派做各种物联网原型开发&#xff0c;但每次从零开始配置环境、写基础代码都很耗时。最近发现InsCode(快马)平台能帮我省去很多重复工作&#xff0c;特别适合快速验证想法。…...

WebGL BIM可视化:浏览器端BIM解决方案的技术实践与行业应用

WebGL BIM可视化&#xff1a;浏览器端BIM解决方案的技术实践与行业应用 【免费下载链接】xeokit-bim-viewer A browser-based BIM viewer, built on the xeokit SDK 项目地址: https://gitcode.com/gh_mirrors/xe/xeokit-bim-viewer 如何解决浏览器端BIM模型加载慢、操…...

如何用Python爬取全国空气质量监测站数据(附完整代码与避坑指南)

Python实战&#xff1a;构建高稳定性的空气质量监测数据爬虫系统 清晨打开天气应用时&#xff0c;那些跳动的PM2.5数值背后&#xff0c;是遍布全国的空气质量监测站在持续工作。作为数据分析师或环境研究者&#xff0c;直接获取这些原始监测数据往往能发现更有价值的规律。但当…...

计算机毕设 java 基于 Android 的医疗预约系统的设计与实现 SpringBoot 安卓智能医疗预约挂号平台 JavaAndroid 医患预约诊疗管理系统

计算机毕设 java 基于 Android 的医疗预约系统的设计与实现 53m069&#xff0c;末尾的数字和英文也要加上 &#xff08;配套有源码 程序 mysql 数据库 论文&#xff09;本套源码可以先看具体功能演示视频领取&#xff0c;文末有联 xi 可分享随着信息技术的飞速发展和医疗需求的…...