XML新增批注、处理指令与CDATA 区段

基于ROS2系统开发机器人 以上是基于ROS 2开发机器人的基本流程和一个简单的发布者-订阅者示例。通过这个流程,你可以逐步扩展和优化你的机器人系统,实现更复杂的功能。 阅读详情

http://www.zzcode.com/article/article_627_1.html

在本章中,你将学习如何加入三种XML 标签到文件中:批注、处理指令,与CDATA 区段。虽然这些项目在格式正确(或有效)的XML 文件中并不是必要的,但是它们拥有极大用处。你可以使用批注来让文件更具可读性,也可以使用处理指令来修改应用软件处理或显示文件的方法。同时你也可以使用CDATA 区段来将字符的任何组合包含在元素的字符数据中。

加入批注

    如同你在第一章中学到的,XML 规格的第6 个目标就是「XML 文件应该是易读的且合理清楚的」。虽然XML 处理器通常会忽略批注,但是适当放置且具意义的批注可以大大增进XML 文件的可读性与清楚度,就像批注可以让程序的原始码如C 或BASIC 变得更容易了解。
    注意
    在Microsoft Internet Explorer 5 中,XML 处理器并不会将批注的文字解析成XML 卷标,也不会以任何其它方式来处理批注。然而,处理器让批注的文字可以被HTML 网页中的script 使用。在第九章中,你将学习如何使用script 来存取批注文字,就像使用XML 文件中其它的组件一样。
    如果你将文件于浏览器中直接开启,而且文件并没有参照的样式表,则Internet Explorer 5 会将所有的批注显示于XML 文件中。

批注的型式

    批注以<!--字符起始,并以-->字符结束。在这两个定义符号之间,你可以输入任何想要的文字-除了双连符号(--)之外。你甚至可以输入被禁止的(<)与(&)符号。下面是一段合法批注的范例:
<!--Here you can type any text except a double hyphen. The <and &characters are OK!-->

你可以放置批注的位置

    你可以将批注放在XML 文件中标签之外的任何地方。换言之,你可以将它们放在文件的序文中:
<?xml version="1.0"?>
<!--Here is a comment in the prolog.-->
<DOCELEMENT>
This is a very simple XML document.
</DOCELEMENT>
    你可以将批注接在文件的元素之后:
<?xml version="1.0"?>
<DOCELEMENT>
This is a very simple XML document.
</DOCELEMENT>
<!--This comment follows the document element.-->
    而你也可以将批注放在文件的内容中:
<?xml version="1.0"?>
<DOCELEMENT>
<!--This comment is part of the content of the root element.-->
This is a very simple XML document.
</DOCELEMENT>
    下面是一个违法的批注范例,因为批注被放在标签中:
<?xml version="1.0"?>
<DOCELEMENT <!--This is an ILLEGAL comment!-->>
This is a very simple XML document.
</DOCELEMENT>
    然而,你可以将批注放在文件型态宣告(DTD)中-虽然DTD 也是标签的一种-但只要批注不是位在DTD 里其它的标签中即可。你将在第五章学习DTD 的相关知识与如何将批注放在DTD中。

使用处理指令

    处理指令的目的是提供XML 处理器传送给应用软件的信息。
注意
    回想第二章所介绍的,XML 处理器是一个读取与储存XML 文件内容的软件模块。应用软件是一个个别的软件模块,负责从处理器取得文件的内容并管理与显示这些内容。当你在Internet Explorer 5 中显示XML 时,浏览器会提供XML 处理器与少部分的应用软件。(如果你撰写script来管理与显示XML 文件,你必须自己提供部分的应用软件)

处理指令的类型

    处理指令拥有下列一般类型:
<?target instruction ?>
    这里的target 是该指令被导引到的应用软件的名字。任何的名称都可以,只要遵守下列规则即可:
    名字必须以字母或底线(_)开始,后面接着零或多个字母、数字、句点(.)、连字号(-),或底线(_)。
    名称「xml」,不管是大写字母或小写字母组成的都会被保留。(如同你所见到的,你使用「xml」以小写字母来代表文件的XML 宣告,这也是处理指令的一种。)
    而instruction 则是被传送到应用软件的信息。它是由任何连续的字符组成,除了「?>」字符对以外(它被保留作终止处理指令用)。

如何使用处理指令

    你可以在XML 文件中使用的特殊处理指令是根据读取文件的处理器而定。如果你使用Internet Explorer 5 当作XML 处理器(如同本书中普遍使用的),你将发现处理器的两个主要用途:
    你可以使用标准的、保留的处理指令来告诉Internet Explorer 5 如何处理或显示文件。你在本书中见到的范例是处理指令告诉Internet Explorer 5 去使用特定样式表来显示文件。例如,下面的处理指令告诉Internet Explorer 5 使用Inventory01.css 的CSS 来显示文件:
<?xml-stylesheet type="text/css" href="Inventory01.css"?>
    如果你撰写网页的script 来处理与显示XML 文件,你可以将任何非保留的处理指令加入到文件中,而且你的script 会读取这些指令并做出适当的处理。例如,你可能会将下面的处理指令加到文件中来告诉你的script 要显示的详细程度:
<?MyScript detail="2" ?>
    在第九章中,你将学习如何使用script 来存取XML 文件中的组件,包括任何的处理指令你可以放置处理指令的地方

    你可以将处理指令加到XML 文件中标签以外的任何地方-意即,你可以将指令放在与放置批注相同的地方:在文件的序文中,后面接着文件元素,或者就放在元素的内容中。下面是一份处理指令位在每一个合法位置的XML 文件:
<?xml version="1.0"?>
<!--The following is a processing instruction in the prolog:-->
<?xml-stylesheet type="text/css" href="Inventory01.css"?>
<INVENTORY>
<BOOK>
<!--Here 's a processing instruction within an
element 's content:-->
<?ScriptA emphasize="yes" ?>
<T99vLE>The Adventures of Huckleberry Finn</T99vLE>
<AUTHOR>Mark Twain</AUTHOR>
<BINDING>mass market paperback</BINDING>
<PAGES>298</PAGES>
<PRICE>$5.49</PRICE>
</BOOK>
<BOOK>
<T99vLE>Leaves of Grass</T99vLE>
<AUTHOR>Walt Whitman</AUTHOR>
<BINDING>hardcover</BINDING>
<PAGES>462</PAGES>
<PRICE>$7.75</PRICE>
</BOOK>
</INVENTORY>
<!--And here 's one following the document element:-->
<?ScriptA Category="books" Style="formal" ?>
    下面则是一个放在卷标中的违法处理指令的范例:
<!--The following element contains an ILLEGAL
processing instruction:-->
<BOOK <?ScriptA emphasize="yes" ??>>
<T99vLE>Leaves of Grass</T99vLE>
<AUTHOR>Walt Whitman</AUTHOR>
<BINDING>hardcover</BINDING>
<PAGES>462</PAGES>
<PRICE>$7.75</PRICE>
</BOOK>
    然而,你可以将处理指令放在文件型态定义(DTD)中-虽然DTD 也是一种卷标-但是只要处理指令不是放在同样位在DTD 中的其它标签之中即可。你将在第五章中学习有关DTD 的知识,以及如何将处理指令放在DTD 中。
 包含CDATA 区段

    如同你在第三章中学到的,你不能直接将(<)或(&)符号放置在元素内容中的字符数据里。要避开这个限制的一种方法是使用字符参照(& #60;或& #38;)或预先定义的普通实体参照(& lt;或& amp;),如同你在第六章中将学到的。然而,如果你需要加入多个(<)或(&)字符,使用这些参照将变得不合适且会让资料变得难以阅读。在这种情况下,将包含限制字符的文字放置在CDATA 区段中将会比较容易完成工作。
    CDATA 区段的类型
    CDATA 区段以字符「<![CDATA[」开始,并以「]]>」字符结束。在这两个定义符号之间,你可以输入任何字符(包括「<」或「&」),除了「]]>」之外。(因为,该字符会被解释成CDATA区段的结束。)所有位在CDATA 区段中的字符都被视为元素字符数据的字义 (literal) 部分,而不是XML 标签。
    下面是一个合法CDATA 区段的范例:
<![CDATA [
Here you can type any characters except two right brackets followed
by a greater-than symbol.
]]>
注意
    关键词CDATA,就像其它你所见到的XML 关键词,必须以大写字母撰写。
    如果你想包含一段原始码或标签当作被显示在浏览器中元素的真实字符数据的一部份,你可以使用CDATA 区段来防止XML 解析器将「<」或「&」字符解释成XML 卷标。下面就是一个范例:
<A-SECTION>
The following is an example of a very simple HTML page:
<![CDATA[
<HTML>
<HEAD>
<T99vLE>R.Jones &Sons</T99vLE>
</HEAD>
<BODY>
<P>Welcome to our home page!</P>
</BODY>
</HTML>
]]>
</A-SECTION>
    例如,若没有CDATA 区段,处理器会假设<HTML>是套迭的元素的起始部分,而不是A-SECTION 元素的字符数据的起始部分。
注意
    既然你可以直接将「<」与「&」字符加入CDATA 区段中,你就不必使用字符参照(& #60;与&#38;)或预先定义的普通实体参照(& lt;与& amp;),笔者将在第六章中解释字符参照与实体参照。事实上,如果你使用这类的参照,解析器会将参照中的每个字符照字面解释,且不会更换掉含有「<」或「&」字符的参照。
    你可以放置CDATA 区段的地方
    你可以将CDATA 区段放置在字符数据可以出现的任何地方-也就是说,在元素的内容中却不在XML 标签中。下面是一个合法放置CDATA 区段的范例
<?xml version="1.0"?>
<MUSICAL>
<T99vLE_PAGE>

 

<![CDATA[
<Oklahoma!>
By
Rogers &Hammerstein
]]>
</T99vLE_PAGE>
<!--Other elements here...-->
</MUSICAL>
    显示于下页的错误型式XML 文件包含了两个违法的CDATA 区段。第一个不是在元素的内容中。第二个则是位在文件元素的内容之中,但却不是在起始标签中。
<?xml version="1.0"?>
<![CDATA[ ILLEGAL::not within element content!]]>
<DOC_ELEMENT>
<SUB_ELEMENT <![CDATA[ ILLEGAL::inside of markup!]]>>
sub-element content...
</SUB_ELEMENT>
</DOC_ELEMENT>
注意
    CDATA 区段不能成巢状套迭。亦即,你不能将一个CDATA 区段放到另一个区段中。 

【在 WSL2 GUI 中使用 pulseaudio 播放声音】 最近在搞一个Linux项目,由于WSL2中需要用到声音外放,无奈只能潜心研究。后来就使用了一种折中的方式替代,那就是pulseaudio。目前来讲WSL2对硬件外设的支持还是不太友好,关于USB的支持我之前在其他文章中已经论述过了,这里不讨论。1、Windows11别忘记打开声音2、可能有一定延迟,因为是通过网络传输的。3、效果的话只能见仁见智了,如果不能满足要求就安装一个实实在在的Ubuntu吧! 阅读详情

相关推荐

STM8库函数开发手册(3) //UART1、内部EEPROM、FLASH操作库、IIC(硬、软)

STM8S 微控制器家族的通用同步异步收发器(UART1,UART2 或者UART3)提供了一种灵活的方法与使用工业标准NRZ 异步串行数据格式的外部设备之间进行全双工数据交换。STM8 的UART 提供范围的波特率选择,并且支持多处理器通讯。UART 也支持LIN(局部互联网)协议版本1.3,2.0,和2.1 以及在主模式下的J2602。 UART1 和UAR...

finedayforu的博客 2520

将map转成<cdata>xml

public static String mapToXml(Map map) { StringBuilder xml = new StringBuilder(); xml.append("<data>"); if (map != null) { Set entrySet = map.entrySet(); for (Iterator iterator = ent...

qq_45015836的博客 661

基于Hadoop的NBA篮球球员大数据分析与可视化系统大数据分析系统python的项目(源码+lw+部署文档+讲解等)

本系统以 Hadoop 为基础,致力于对 NBA 篮球球员的海量数据进行深入分析与可视化呈现。它能够收集来自多个数据源的丰富数据,包括球员比赛统计数据、身体素质数据、技术特点数据等。利用 Hadoop 的分布式存储和计算能力,对这些大规模数据进行高效处理。通过数据分析算法,挖掘球员的潜在价值和特点,如球员的得分能力趋势、篮板球效率变化、不同位置球员的技术差异等。同时,借助先进的可视化技术,将分析结果以直观的图表、图形等形式展示出来。教练和球队管理层可以通过可视化界面清晰地了解球员的综合表现和发展态势,从而制

QQ3359892174的博客 1314

数据对接利用hutool工具类进行xml解析,xml转换成map,然后进行数据入库

数据对接xml解析 <ESBEntry> <!--通过MB对请求进行权限验证,验证后将删除AccessControl节点 --> <AccessControl> <UserName>用户名</UserName> <Password>密码 </Password> <SysFlag>环境标识 </SysFlag> <Fi

全栈世界 9391

手把手教你用内核远程call实现64位进程注入(附完整ShellCode示例)

本文深入探讨了在Windows 64位环境下,通过内核态直接操作线程TrapFrame结构实现进程注入的高级技术。文章提供了从驱动框架设计、用户态-内核态通信,到定位修改TrapFrame、编写Shellcode及执行环境恢复的完整实战指南,并附有详细的代码示例,为安全研究人员和开发者提供了绕过用户态检测、实现底层远程代码执行的新思路。

weixin_28396629的博客 344

排除 AcroForm 中 JavaScript 脚本的 Bug

本文介绍了Acrobat JavaScript脚本故障排除的基本方法。首先应检查控制台窗口的错误报告,通过具体示例演示了5类常见错误:语法错误(如缺少大括号)、未终止字符串、未定义变量、运算符混淆及变量作用域问题,并逐步给出修复方案。文章还提供了调试流程UML图和实用经验总结,强调关注细节(如分隔符匹配)、正确使用运算符和变量作用域等要点。最后建议采用系统化调试方法,包括关闭/重新打开表单等完整性测试。

小猫三两只。 1501

Java使用Hutool调用WebService接口详解

大家WebService接口还在使用生成的类去实现调用的吗?其实Hutool的WebService工具很厉害,但是文档写的不太清楚,或者示例不够多,我主要做医疗业务,对接方基本都是WebService接口,刚开始使用hutool的时候确实花费了挺长时间研究,最终失败告终,奈何业务多,有丰富的机会去尝试,现在基本啥格式的都可以克服了。一、WebService是什么?

神奇的饭团的博客 2万+

get_seed协议

【代码】get_seed协议。

a545958498的博客 911

XML注释

xml注释,以及一些基本操作

lz17267861157的博客 1万+

基于STM32平衡小车设计

随着智能硬件的发展,基于STM32的两轮智能平衡车作为一种新型的智能移动工具,具备较高的应用价值。本文旨在设计并实现一款基于STM32微控制器的智能平衡车系统,提升其稳定性和操控性,探索如何通过传感器数据和控制算法实现精确平衡控制。 本设计基于STM32微控制器,选择了STM32F103系列作为核心控制器,具有足够的处理能力和丰富的外设接口。系统通过MPU6050传感器获取三轴加速度和三轴陀螺仪数据,实现实时姿态检测。电机驱动部分采用合适的驱动模块,能够控制两个直流电机,并支持PWM调速。设计中还包括OL

m0_74026776的博客 2730

为什么我的 Spark Executor / Yarn Container 只有一个vCore?

在很多集群里,在关闭了Spark的DynamicAllocation的前提下(避免自动申请空闲资源,干扰测试结果),都会观察到:提交Spark作业时,申请 1 个 driver + n 个 executor 会在Yarn上会对应创建 n+1 个 container,但是每个container只有一个vCore,通过--driver-cores和--executor-cores设定的vCore数都未奏效。有人会因此错误的认为Yarn上的一个vCore对应一个Spark的executor,这是非常错误的,正确的

Laurence的技术博客 916

解决:xml文件单行注释、多行注释问题

【解决:xml文件中的单释、多行注释问题】 第一种(单行): <!-- 注释内容 --> 第二种(多行): <!-- 注释内容(无其他注释符) ...

qq_33423991的博客 13万+

5.6华为OD机试真题 新系统 - 匹配命令行前缀关键字 (Java/Py/C/C++/Js/Go)

5.6华为OD机试真题 新系统 - 匹配命令行前缀关键字本文整理华为 OD 机试新系统机考真题库,涵盖高频考点精析与完整题目内容,提供 C 语言、Java、C++、Python、Go、JavaScript 多语言源码实现,搭配详细解题思路讲解,并支持在线 OJ 刷题练习,助力高效备考华为 OD 机试新系统。

算法大师! 2126

为XML添加CDATA标记

CDATA标记用户处理XML中出现 ,在消息传输过程中,为什么要加上这一段字符串? 首先,先来了解一下什么是CDATA? 术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据。 在 XML 元素中," " "&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。 CDATA 部分中的所有内容都会被解析器忽略。 比如说:我要回复一条a 导入XStrea

若泣、 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

c语言 xml特殊字符转意,XML 特殊字符处理和 CDATA

在处理XML数据时,特殊字符要特殊处理,不能和节点字符混淆。所有 XML 文档中的文本均会被解析器解析。只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。PCDATAPCDATA 指的是被解析的字符数据(Parsed Character Data)。XML 解析器通常会解析 XML 文档中所有的文本。当某个 XML 元素被解析时,其标签之间的文本也会被解析:此文本也会被解...

weixin_29161719的博客 722

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

xml 对特殊字符的处理(添加cdata标签)

xml 对特殊字符的处理

时光的博客 6255

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

XML中的CDATA(字符数据)

Introduction 介绍 The Term CDATA basically refers to Character Data. In XML it is basically a block of texts or sentences that are not parsed by the parser and are treated as regular English text. It ...

cumtb2009的博客 2181

XML中的实体引用的替代方法和CDATA保留字符模块

所有 XML 文档中的文本均会被解析器解析。 只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。 ** 在 XML 中有 5 个预定义的实体引用: ** &lt; &lt; 小于 &gt; &gt; 大于 &amp; &amp; 和号 ’ ’ 省略号 " " 引号 注释:严格地讲,在 XML 中仅有字符 “&lt;“和”&amp;” 是非法的。省略号、引号和大于号是合法的...

Python美丽星球--微信(Felixzfb) 631

XML文件学习

XML CDATA 文本所有 XML 文档中的文本均会被解析器解析。只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。Parsed DataXML 解析器通常会解析 XML 文档中所有的文本。当某个 XML 元素被解析时,其标签之间的文本也会被解析:此文本也会被解析解析器之所以这么做是因为 XML 元素可包含其他元素,就像这个例子中,其中的

liangqingming的专栏 412

xml处理指令

XML 处理指令: 处理指令,简称PI (processing instruction)。处理指令用来指挥解析引擎如何解析XML文档内容。 例如,在XML文档中可以使用xml-stylesheet指令,通知XML解析引擎,应用css文件显示xml文档内容。 处理指令必须

zhaoxinglei0309的专栏 6484

XML的运用(XML解析)

Java中配置XML文件的三种配置位置机读取方式:常用的三种。

无法自律的人的博客 1772

xml文档声明、处理指令、注释

1.文档声明 作用:告诉xml处理程序,这个文档是一个标准的xml文档,并声明文档语法所遵循的xml版本、文档内容的编码格式以及是否与外部其他文件有依赖关系。 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> XML 声明文件的可选部分,如果存在需要放在文档的第一行,如果使用xml声明,则必须指明version属性。一个xml文档可以不包括声明,这时xml声明的属性取默认值,encoding默认值为UTF-8。 2.处理指

臭屁虾的博客 2355

xml声明、处理指令

1、     xml文档的第一行用来声明xml的基本属性,用来指挥解析引擎如何去解析当前xml。     *通常一个xml都要包含并且只能包含一个文档声明。     *xml的文档必须在整个xml的最前面,在文档声明之前不能有任何内容。     --version是必须存在的属性,表明当前xml所遵循规范的版本,目前位置都写1.0就可以了。     --encoding用来只会解析引擎在

chenliwen1991303的博客 1541

XML

XML用途 XML指可扩展标记语言(EXtensible Markup Language),是独立于软件和硬件的信息传输工具。 XML应用于web开发的许多方面,常用于简化数据的存储和共享 XML简化数据共享 XML简化数据传输 XML简化平台的变更 XML处理指令 XML处理指令,简称PI(processing instruction) 处理指令用来指挥解析引擎如何解析XML文档内容 ...

zhyue28的博客 278

在Xml中加注释的方法

并非用于 XML 分析器的内容(例如与文档结构或编辑有关的说明)可以包含在注释中。 注释以  开始并以 --> 结束,例如 <!--catalog last updated 2000-11-01-->。 注释可以出现在文档序言中,包括文档类型定义 (DTD);文档之后;或文本内容中。 注释不能出现在属性值中。 不能出现在标记中。 分析器在遇到 > 时,就认为注释已结束;然后

linshichen的专栏 11万+

XML如何添加注释?

注释以<!--开始并以 -->结束,例如<!--注释内容-->。注释可以出现在文档序言中,包括文档类型定义 (DTD);文档之后;或文本内容中。注释不能出现在属性值中。不能出现在标记中。分析器在遇到>时,就认为注释已结束;然后继续将文档作为正常的 XML 处理。因此,字符串>不能出现在注释中。除了该限制之外,任何合法的 XML 字符均可以出现在注释中,与 CDATA 节非常类似。这样,可以从分析器看到的输出流中删除 XML 注释,同时又...

cnmeimei的博客 6364
上一篇: CDATA 与 PCDATA区别
下一篇: 图片加载进度实时显示
Reasoncool
博客等级 码龄21年 16粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值