XML标记语言简介

XML标记语言简介


XML(eXtensible Markup Language,可扩展标记语言)是一种标记语言,设计用于存储和传输数据。它通过标签结构来描述数据,并且标签是自定义的,这使得 XML 非常灵活。以下是对 XML 及其用途、好处和应用场景的详细介绍:

什么是 XML

XML 是一种文本格式,用于表示结构化信息。其设计目标是可读性好、易于理解和扩展。XML 文档的基本结构如下:

<root>
    <element attribute="value">Content</element>
</root>

XML 的用途

  1. 数据存储:XML 常用于数据存储,可以将数据保存在文件中或通过网络传输。
  2. 数据交换:在不同系统之间传输数据时,XML 是一种常见的数据交换格式。
  3. 配置文件:许多应用程序使用 XML 来存储配置信息。
  4. 文档格式:例如,Microsoft Office 和 OpenOffice 使用 XML 格式存储文档。
  5. 网络协议:许多网络协议(如 SOAP)使用 XML 作为消息格式。

XML 的好处

  1. 自描述性:XML 文档中包含标签和数据,使得数据结构清晰明了。
  2. 平台独立性:XML 是纯文本格式,可以在不同的操作系统和平台之间传输和处理。
  3. 可扩展性:XML 标签是自定义的,可以根据需要添加新的标签和属性。
  4. 标准化:XML 由 W3C 标准化,具有广泛的支持和兼容性。
  5. 易于解析:许多编程语言都有内置或第三方库来解析 XML 数据。

使用 XML 的场景和环境

  1. 跨平台数据交换:在不同平台或编程语言之间传输数据时,XML 提供了一种通用的数据格式。
  2. Web 服务:XML 经常用于 Web 服务和远程过程调用(RPC)中,例如 SOAP 协议。
  3. 配置管理:应用程序和服务器通常使用 XML 文件来存储配置参数。
  4. 文档格式:办公软件、出版系统和电子书格式使用 XML 来描述文档结构和内容。
  5. 数据备份和迁移:XML 是一种方便的数据备份和迁移格式,因其易于解析和转换。

示例:数据存储和交换

以下是一个简单的 XML 文件示例,描述了一本书的基本信息:

<bookstore>
    <book>
        <title lang="en">Learning XML</title>
        <author>John Doe</author>
        <year>2024</year>
        <price>39.95</price>
    </book>
</bookstore>

该 XML 文件可以在不同的系统和应用程序之间传输,并通过解析器读取其内容。

示例:配置文件

以下是一个简单的 XML 配置文件示例:

<configuration>
    <database>
        <host>localhost</host>
        <port>3306</port>
        <username>root</username>
        <password>password</password>
    </database>
    <logging>
        <level>DEBUG</level>
        <file>app.log</file>
    </logging>
</configuration>

该配置文件可以被应用程序读取,并根据配置进行初始化。


理解 XML 的结构和用途对于数据存储和传输、配置管理以及文档格式化等应用非常重要。以下是详细的介绍:

XML 的结构

XML(eXtensible Markup Language)是一种标记语言,其结构由元素、属性、文本和声明等组成。

基本结构

一个 XML 文档通常包括以下部分:

  1. XML 声明:声明 XML 版本和编码方式(可选)。

    <?xml version="1.0" encoding="UTF-8"?>
    
  2. 根元素:每个 XML 文档必须有且仅有一个根元素,所有其他元素都是根元素的子元素。

    <root>
        <!-- 子元素 -->
    </root>
    
  3. 元素:元素是 XML 的基本构建块,可以包含文本、其他元素和属性。

    <element>内容</element>
    
  4. 属性:元素可以有属性,属性提供元素的附加信息。

    <element attribute="value">内容</element>
    
  5. 文本内容:元素可以包含文本内容。

    <element>文本内容</element>
    
  6. 注释:可以在 XML 中添加注释,注释不会被解析器处理。

    <!-- 这是一个注释 -->
    

当然,关于 XML 的学习还有很多内容,包括标签名称的定义规则、命名空间、模式定义(如 DTD 和 XML Schema)、XPath、XSLT 等。以下是这些内容的详细介绍:

XML 标签名称的定义规则

XML 标签的命名遵循一定的规则,以确保标签名称的有效性和兼容性。以下是 XML 标签名称的主要规则:

  1. 合法字符

    • 标签名称必须以字母或下划线(_)开头。
    • 后续字符可以是字母、数字、下划线(_)、连字符(-)、点(.)或冒号(:)。
    • 标签名称中不能包含空格。
  2. 区分大小写

    • XML 标签名称是区分大小写的。例如,<Tag><tag> 是两个不同的标签。
  3. 不能以“xml”开头

    • 标签名称不能以“xml”或“XML”开头,因为这部分名称被保留给 XML 规范。
示例
<validTag>Content</validTag>
<ValidTag>Content</ValidTag>
<tag123>Content</tag123>
<tag_name>Content</tag_name>
<tag-name>Content</tag-name>
<tag.name>Content</tag.name>

命名空间(Namespaces)

命名空间用于避免不同 XML 文档中标签名称的冲突。通过定义命名空间,可以在同一个 XML 文档中使用相同名称的标签,而不会产生冲突。

命名空间的定义和使用

命名空间通过 xmlns 属性定义,通常包含一个前缀和一个 URI。

<root xmlns:h="http://www.w3.org/TR/html4/" xmlns:f="http://www.w3schools.com/furniture">
    <h:table>
        <h:tr>
            <h:td>Apples</h:td>
            <h:td>Bananas</h:td>
        </h:tr>
    </h:table>

    <f:table>
        <f:name>African Coffee Table</f:name>
        <f:width>80</f:width>
        <f:length>120</f:length>
    </f:table>
</root>

在这个示例中,hf 是前缀,分别用于区分 HTML 标签和家具标签。

模式定义(Schema Definition)

XML 模式定义(Schema Definition)用于描述 XML 文档的结构和规则。主要有两种方式:DTD(Document Type Definition)和 XML Schema。

DTD(Document Type Definition)

DTD 是一种旧式的模式定义方法,用于定义 XML 文档的合法结构。

DTD 的组成部分
  1. 元素声明:定义文档中允许出现的元素及其内容模型。
  2. 属性列表声明:定义元素可以包含的属性及其类型。
  3. 实体声明:定义可重用的文本片段或字符实体。
  4. 注释:提供关于文档结构的说明。
内部 DTD 示例
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>
外部 DTD 示例

note.dtd:

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>

note.xml:

<!DOCTYPE note SYSTEM "note.dtd">
<note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>

一个实例:

<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>
XML Schema

XML Schema 是一种功能更强大的模式定义方法,提供了更多的数据类型和约束。与 DTD 不同,XML Schema 本身是 XML 文档,可以更灵活地定义复杂的数据结构。。

XML Schema 的组成部分
  1. 元素声明:定义文档中允许出现的元素及其数据类型。
  2. 属性声明:定义元素可以包含的属性及其数据类型。
  3. 复杂类型:定义具有嵌套元素和属性的复杂结构。
  4. 简单类型:定义基本数据类型和约束。
XML Schema 示例

schema.xsd:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="note">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="to" type="xs:string"/>
                <xs:element name="from" type="xs:string"/>
                <xs:element name="heading" type="xs:string"/>
                <xs:element name="body" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

note.xml:

<?xml version="1.0" encoding="UTF-8"?>
<note xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="schema.xsd">
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>

一个实例:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="note">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="to" type="xs:string"/>
                <xs:element name="from" type="xs:string"/>
                <xs:element name="heading" type="xs:string"/>
                <xs:element name="body" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

上述两者的结构和搭建方式会在另外的文档中叙述,以下展示两者区别:

DTD 与 XML Schema 的对比
特性DTDXML Schema
语法专用语法XML 语法
数据类型支持有限(#PCDATA, ID, IDREF 等)丰富(string, integer, date 等)
命名空间支持不支持支持
可扩展性有限
可读性依赖于熟悉程度易读,类似 XML
重用性较差高,通过类型继承和组合

XPath(XML Path Language)

XPath 是一种用于在 XML 文档中导航和选择节点的语言。它通过路径表达式查找 XML 文档中的节点。

示例
<bookstore>
    <book>
        <title lang="en">Learning XML</title>
        <author>John Doe</author>
        <year>2024</year>
        <price>39.95</price>
    </book>
</bookstore>

使用 XPath 选择 title 元素:

/bookstore/book/title

XSLT(Extensible Stylesheet Language Transformations)

XSLT 是一种用于转换 XML 文档的语言。它使用样式表定义如何将 XML 文档转换为另一种格式(如 HTML 或另一个 XML)。

示例
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <html>
            <body>
                <h2>My Bookstore</h2>
                <table border="1">
                    <tr bgcolor="#9acd32">
                        <th>Title</th>
                        <th>Author</th>
                        <th>Year</th>
                        <th>Price</th>
                    </tr>
                    <xsl:for-each select="bookstore/book">
                        <tr>
                            <td><xsl:value-of select="title"/></td>
                            <td><xsl:value-of select="author"/></td>
                            <td><xsl:value-of select="year"/></td>
                            <td><xsl:value-of select="price"/></td>
                        </tr>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
示例 XML 文档

以下是一个简单的 XML 示例文档,描述了一本书的基本信息:

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book>
        <title lang="en">Learning XML</title>
        <author>John Doe</author>
        <year>2024</year>
        <price>39.95</price>
    </book>
    <book>
        <title lang="fr">Apprendre XML</title>
        <author>Jane Doe</author>
        <year>2023</year>
        <price>29.95</price>
    </book>
</bookstore>

XML 的用途

XML 广泛应用于各种领域,包括数据存储、数据交换、配置管理、文档格式化和网络协议等。以下是一些主要用途的详细介绍:

1. 数据存储

XML 常用于存储结构化数据。由于 XML 是纯文本格式,可以很容易地被解析和处理。许多应用程序使用 XML 文件来存储数据,例如配置文件、日志文件和数据导出文件。

<users>
    <user>
        <id>1</id>
        <name>Alice</name>
        <email>alice@example.com</email>
    </user>
    <user>
        <id>2</id>
        <name>Bob</name>
        <email>bob@example.com</email>
    </user>
</users>
2. 数据交换

XML 是一种通用的数据交换格式,适用于不同系统和编程语言之间的数据传输。例如,Web 服务通常使用 XML 来传输数据,SOAP(Simple Object Access Protocol)就是基于 XML 的协议。

<response>
    <status>success</status>
    <message>Data retrieved successfully</message>
</response>
3. 配置管理

许多应用程序使用 XML 来存储配置信息。这使得配置文件易于读取和修改,并且可以跨平台使用。

<configuration>
    <database>
        <host>localhost</host>
        <port>3306</port>
        <username>root</username>
        <password>password</password>
    </database>
    <logging>
        <level>DEBUG</level>
        <file>app.log</file>
    </logging>
</configuration>
4. 文档格式化

XML 经常用于定义文档格式。例如,Microsoft Office 和 OpenOffice 使用 XML 格式来保存文档。XML 也被用于 HTML(HyperText Markup Language)的扩展,如 XHTML。

<document>
    <title>Sample Document</title>
    <section>
        <header>Introduction</header>
        <paragraph>This is an example of a document formatted in XML.</paragraph>
    </section>
</document>
5. 网络协议

XML 也被用作网络协议中的数据格式。例如,SOAP 使用 XML 来封装消息,RESTful Web 服务可以使用 XML 或 JSON 来传输数据。

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
    <soap:Header/>
    <soap:Body>
        <m:GetPrice xmlns:m="https://www.example.org/stock">
            <m:StockName>IBM</m:StockName>
        </m:GetPrice>
    </soap:Body>
</soap:Envelope>

XML 的好处

  1. 自描述性:XML 标签是自描述的,提供了清晰的数据结构。
  2. 平台独立性:XML 是纯文本格式,可以在不同平台和系统之间传输和处理。
  3. 可扩展性:XML 标签是自定义的,可以根据需要扩展。
  4. 标准化:XML 是由 W3C(World Wide Web Consortium)标准化的,具有广泛的支持和兼容性。
  5. 易于解析:许多编程语言都提供了处理 XML 的库和工具,解析和生成 XML 都很方便。

总结

XML 是一种灵活、可扩展的数据表示格式,广泛应用于数据存储、数据交换、配置管理和文档格式等领域。其自描述性、平台独立性和标准化的特点使其成为跨平台数据传输和存储的理想选择。理解 XML 的结构和用途,对于现代软件开发和系统集成至关重要。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT案例-通过QCustomPlot库绘制Window系统CPU温度实时折线图

之前项目中涉及到了获取硬件信息内容&#xff0c;对CPU的温度监控有点兴趣&#xff0c;观察和百度发现鲁大师和驱动人生的CPU温度监控貌似是用驱动实现的&#xff0c;有点太高大上了&#xff0c;搞不懂。后面经过到处查找资料终于找到了Qt在Windows 环境下监控CPU等硬件温度/运…

android文本长按复制

android文本长按复制 &#x1f4d6;1. 长按直接复制✅步骤一&#xff1a;定义一个TextView✅步骤二&#xff1a;为TextView注册长按事件✅步骤三&#xff1a;弹出系统复制功能 &#x1f4d6;2. 长按弹框确认复制✅步骤一&#xff1a;定义一个TextView✅步骤二&#xff1a;封装P…

vue详解

目录 ​编辑 常用指令 v-for v-bind v-if & v-show v-if v-show v-on v-model Vue生命周期 ​编辑 Axios Axios使用步骤 Axios-请求方式别名 Vue简单案例 常用指令 指令:HTML标签上带有 v-前缀的特殊属性&#xff0c;不同的指令具有不同的含义&#xff0c;可…

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片(Form_Vision部分代码)

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片(Form_Vision部分代码) 1 目标效果视频 CamManager 2 增加一个class IMG_BUFFER 用来管理采集的图片 // <summary> /// IMG_BUFFER 用来管理内存图片的抓取队列 /// </summary> public class IMG_BUFF…

imx6ull/linux应用编程学习(14) MQTT基础知识

什么是mqtt&#xff1f; 与HTTP 协议一样&#xff0c; MQTT 协议也是应用层协议&#xff0c;工作在 TCP/IP 四层模型中的最上层&#xff08;应用层&#xff09;&#xff0c;构建于 TCP/IP协议上。 MQTT 最大优点在于&#xff0c;可以以极少的代码和有限的带宽&#xff0c;为连接…

electron在VSCode和IDEA及webStrom等编辑器控制台打印日志乱码

window10环境下设置 1.打开Windows设置 2.打开时间和语言&#xff0c;选择语言菜单、如何点击管理语言设置 3.打开之后选择管理&#xff0c;选择更改系统区域设置&#xff0c;把Beta版&#xff1a;使用Unicode UTF-8提供全球语言支持 勾上&#xff0c;点击确定&#xff0c;…

后端学习(一)

添加数据库包&#xff1a; 数据库连接时 发生错误&#xff1a; 解决方式&#xff1a; SqlConnection conn new SqlConnection("serverlocalhost;databaseMyBBSDb;uidsa;pwd123456;Encryptfalse;") ;conn.Open();SqlCommand cmd new SqlCommand("SELECT * FROM…

Debug-017-elementUI-el-cascader组件首次选择选项不触发表单的自定义校验

前情提要&#xff1a; 今天维护一个表单校验的时候发现一件事情&#xff0c;就是在表单中使用了 el-cascader组件&#xff0c;希望根据接口返回数据去动态校验一下这里面的选项&#xff0c;符合逻辑就通过自定义的表单校验&#xff0c;不符合就在这一项的下面标红提示。做的时候…

OpenHarmony 入门——单元测试UnitTest快速入门

引言 OpenHarmony 的单元测试&#xff08;UnitTest&#xff09;是一个关键的软件开发过程&#xff0c;它确保代码的各个部分能够按预期工作&#xff0c;OpenHarmony的测试框架中提供了很多种的单元测试&#xff0c;今天简单介绍下UnitTest 类型的TDD测试。 OpenHarmony 的TDD …

群体优化算法---文化算法介绍,求解背包问题

介绍 文化算法&#xff08;Cultural Algorithm, CA&#xff09;是一种基于文化进化理论的优化算法&#xff0c;首次由Robert G. Reynolds在20世纪90年代提出。文化算法通过模拟人类社会中的文化进化过程&#xff0c;利用个体与群体的双重进化机制来解决优化问题。其基本思想是…

MGRE复习综合实验

R1与R5之间使用ppp的pap认证&#xff0c;R5为主认证方&#xff1a; R1 interface Serial4/0/0ip address 15.0.0.1 8link-protocol pppppp pap local-user huawei password cipher 123456 R5 aaalocal-user huawei password cipher 123456local-user huawei service-type…

海外媒体发稿-全媒体百科

全球知名媒体机构 在全球范围内&#xff0c;有许多知名的新闻机构负责报道世界各地的新闻事件。以下是一些国外常见的媒体机构&#xff1a; AP&#xff08;美联社&#xff09;合众国际社&#xff08;UPI&#xff09;AFP(法新社)EFE&#xff08;埃菲通讯社&#xff09;Europa …

JavaSE学习笔记第二弹——对象和多态(上)

目录 面向对象基础 面向对象程序设计的定义 类的基本结构 成员变量 成员方法 方法定义与使用 设计练习 方法重载 构造方法 静态变量和静态方法 String和StringBuilder 基本含义 区别 总结 今天我们继续来学习JavaSE&#xff0c;扩展和Java相关的知识&#xff0c;…

【软件分享】气象绘图软件Panoply

气象是大气中的物理现象&#xff0c;气象要素则是表明大气物理状况的要素&#xff0c;主要的气象要素有降水、风、气压、湿度等。为了研究气象要素在空间上的分布和运动状况&#xff0c;我们需要对气象要素进行空间上进行可视化&#xff0c;这个时候就需要气象领域的一些的绘图…

FastReport 指定sql,修改数据源 ( 非DataSet修改 )

FastReport 指定sql&#xff0c;修改数据源&#xff0c;非DataSet修改 介绍报告文件&#xff1a; codetest.frx 文件核心代码&#xff1a;&#xff08;扩展&#xff09;小结一下&#xff1a; 介绍 在FastReport中&#xff0c;经常会遇到需要给 sql 加条件的情况。 &#xff0…

Open3D KDtree的建立与使用

目录 一、概述 1.1kd树原理 1.2kd树搜索原理 1.3kd树构建示例 二、常见的领域搜索方式 2.1K近邻搜索&#xff08;K-Nearest Neighbors, KNN Search&#xff09; 2.2半径搜索&#xff08;Radius Search&#xff09; 2.3混合搜索&#xff08;Hybrid Search&#xff09; …

进程 VS 线程(javaEE篇)

&#x1f341; 个人主页&#xff1a;爱编程的Tom&#x1f4ab; 本篇博文收录专栏&#xff1a;JavaEE初阶&#x1f449; 目前其它专栏&#xff1a;c系列小游戏 c语言系列--万物的开始_ 等 &#x1f389; 欢迎 &#x1f44d;点赞✍评论⭐收藏&#x1f496;三连支…

shell脚本编程的练习

字符测试方法&#xff1a; 双目测试 比较两个字符串&#xff1a; &#xff1a;等于,等值比较 &#xff01;&#xff1a;不等 单目测试&#xff1a; -n $stringVar:字符串是否为空&#xff0c;不空为真&#xff0c;空则为假 -z $stringVar:字符串是否为空&#xff0c;空则为…

xxl-job集成SpringBoot

安装xxl-job客户端一般有很多方式&#xff0c;我这里给大家提供两种安装方式&#xff0c;包含里面的各项配置等等。 前期需要准备好MySQL数据库。复制SQL到数据库里面。 # # XXL-JOB v2.4.2-SNAPSHOT # Copyright (c) 2015-present, xuxueli.CREATE database if NOT EXISTS x…

终于找到了免费的C盘清理软件(极智C盘清理)

搜了很久&#xff0c;终于让我找到了一款 完全免费的C盘清理软件&#xff08;极智C盘清理&#xff09;。 点击前往官网免费使用极智C盘清理软件&#xff1a; C盘清理 用户好评 完全免费的极智C盘清理 用极智C盘清理清理了下系统的临时文件、缓存等无用数据文件&#xff0c;C盘终…