本节要点:

  • 了解XML的文档声明
  • 了解XML的元素、命名规则、属性、元素内容、处理指令等概念

1   XML文档声明

表示该文档是一个XML文档,以及遵循哪个XML版本的规范。

规范:<?xml 版本信息(编码信息)(文档独立性信息)?>

文档声明在XML文件中是可选的第一项,推荐在每个XML文档中都包含文档声明。如果在XML文件中写出了声明就必须包含version属性,表示XML的版本,截止目前XML只有一个版本,即1.0。在XML声明之前不许有任何内容,包括空格。

示例:<?xml version=“1.0” encoding=”UTF-8” standalone=”no”?>

文档声明属性:

encoding属性(可选的):注明XML文档使用的字符编码方式。采用Unicode编码时可以在XML文档声明中省略字符集编码,当XML文档使用非Unicode编码时,必须在XML文档声明中指定其字符集编码

如:< ?xml version=“1.0” encoding=”gb2312”?>

standalone属性(可选的):说明文档是否是独立的,yes(缺省)——该文档没有依赖外面的任何文件而可以独立存在,no——该文档依赖于外面的某个文件

如果同时设置了encoding和standalone属性,standalone属性要位于encoding属性之后。

2   元素

XML的基本组成单位是元素,元素由标记来定义,标记包括起始标记<>和结束标记</>,属性要写在起始标记内。在XML中,所有元素必须有结束标记。

语法样式:

<元素名 属性名=“属性值”>

元素内容

</元素名>

1)   元素内容

可以是其他元素标记、简单的文本、没有任何信息、其他元素标记和文本内容混合等。

嵌套

在一个元素中可以嵌套若干个子元素,如下:

XML标记不能交叉,如下:

2)   元素关系

在XML中,各元素之间是相互关联的。包含在另一个元素中的元素称为子元素,包含子元素的元素称为父元素。嵌套子元素必须完整地包含在它的父元素中

3)   根元素

根元素指没有被嵌套在其他元素内的元素,最高层元素,仅一个。XML文档中所有元素都是根元素的子孙元素。

4)   空元素

不包含任何内容的元素。

3   命名规则

在XML中,可以使用自己需要的元素来扩展标记语言。

命名基本规则:

  • 元素名称不能以数字或特殊字符开头
  • 可以包含字母,数字,下划线等
  • 不能以字符串“XML”作为开头
  • 不能包含空格
  • 尽量不要包含特殊字符
  • 区分大小写

判断对错,如:

区分大小写:

流行的命名规则:

  • 元素名称尽量简短
  • 大小写尽量采用同一标准
    • 完全用小写字母来书写名称,当名称中包含多个单词时,相互之间用下划线隔开
    • 将每个单词的首字母大写,不使用分隔符
  • 可以使用非英文字符
    • 推荐使用英文字符+数字来命

4   元素属性

元素属性是用来对元素做进一步说明的:

在XML中,属性值一定要用双引号或者单引号引起来,否则将被视为错误,推荐先使用双引号。属性区分大小写。

属性也可以被改为使用子元素来描述,但是推荐使用子元素描述数据。

属性不能包含多个值。

5   CDATA & PCDATA

5.1 CDATA

术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。

在 XML 元素中,"<" 和 "&" 是非法的。

"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。

"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。

某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。

CDATA 部分中的所有内容都会被解析器忽略。

CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束,可以在CDATA区嵌入其它语言的代码。

示例:

<?xml version="1.0" encoding="utf-8" ?>

<people>

<![CDATA[   <!--  !和[之间不要有空白 -->

<teacher>

<name>yeah</name>

<sex>Boy</sex>

<age>22</age>

<add>&address;</add>

</techer>

]]>

</people>

5.2  PCDATA

PCDATA指的是由XML解析器解析的内容,当作一般的文字资料来解读。

PCDATA区是指:

  • 直接写在元素的起始标记和结尾标记之间的内容
  • 由XML解析器解析的内容,当作一般的文字资料来解读
  • XML解析程序会将空格和换行如实地交给下游程序去处理

有些字符不能直接写在pcdata区,如<、&等。

6   注释

注释的内容会被程序忽略而不做解释和处理。

注:不要把注释放在XML的声明之前;注释不能嵌套使用。

7   处理指令

为处理XML文档的应用程序提供提示信息

处理指令格式:

<?处理指令名 处理指令信息?>

<?xml-stylesheet type=“text/css” href=“book.css”?>

XML解析器会把处理指令原封不动地传送给应用程序,由应用程序来解释这个指令,按照它所提供的信息进行处理。

XML基本语法的更多相关文章

  1. XML的语法

    XML的语法 文档声明: 写法 <?xml version="1.0" ?> 文档声明必须出现在xml文件的第一行和第一列的位置 属性: version="1 ...

  2. XML DTD语法详解

    XML DTD详解   XML DTD详解 前情提要与本文内容介绍 前面的两篇XML相关博文: 第一篇是介绍格式正规的XML: 格式正规的XML:语法 属性 实体 处理指令 样式单 CDATA节 第二 ...

  3. JAVA企业级开发-xml基础语法&约束&解析(04)

    一.什么是xml html:超文本标记语言.它主要是用来封装页面上要显示的数据,最后通过浏览器来解析html文件,然后把数据展示在浏览器上.同样我们可以使用JS和DOM技术对html文件进行解析和操作 ...

  4. java日志框架系列(4):logback框架xml配置文件语法

    1.xml配置文件语法 由于logback配置文件语法特别灵活,因此无法用DTD或schema进行定义. 1.配置文件基本结构 配置文件基本结构:以<configuration>标签开头, ...

  5. 2016 - 1 - 23 xml解析 -- 语法简介

    一: XML的概念 1. 一种可拓展标记语言 2. 与json一样,也是一种常用的数据交互格式 3. 一般也叫XML文档---XML Document 二: XML语法   1.一个完整的XML文档一 ...

  6. xml的语法与创建

    xml语法很简单,但很严格,如果出现错误则不能正常解析,而HTML如果出现局部的错误,照样解析 xml第一行必须写xml头<?xml version='1.0' encoding='utf8'? ...

  7. xml基本语法(2)

    本节要点: 了解XML的文档声明 了解XML的元素.命名规则.属性.元素内容.处理指令等概念 1 XML文档声明 表示该文档是一个XML文档,以及遵循哪个XML版本的规范. 规范:<?xml 版 ...

  8. XML(一)语法

    一.xml语法 1.文档声明 2.元素 3.属性 4.凝视 5.CDATA区.转义字符 6.处理指令 1.文档声明: 用来声明xml的基本属性,用来指挥解析引擎怎样去解析当前xml 通常一个xml都要 ...

  9. WSO2 ESB XML定义语法(3)

    6.Property Mediator 通过Synapse调解的每条消息都可以具有一组关联的属性.Synapse引擎和底层传输在处理的每条消息上设置了许多属性,用户可以操纵这些属性来修改消息流的运行时 ...

随机推荐

  1. Webx框架:Spring Schema 和 Spring Ext

    webx诞生的原因是当时市面上没有好用的web框架.如今的Web框架有非常多.然后它们背后的思想都是相似的,并且越来越趋同. Spring Schema 在传统的spring中,配置bean时须要手动 ...

  2. atitit.浏览器插件解决方式----ftp插件 attilax 总结

    atitit.浏览器插件解决方式----ftp插件  attilax 总结 1. 界面概览  D:云盘同步目录p5p5f tp.demo.html1 2. 初始化1 3. 事实调用2 4. 參考2 1 ...

  3. (hdu step 7.1.7)Wall(求凸包的周长——求将全部点围起来的最小凸多边形的周长)

    题目: Wall Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  4. Codeforces Round #350 (Div. 2) E. Correct Bracket Sequence Editor 线段树模拟

    E. Correct Bracket Sequence Editor   Recently Polycarp started to develop a text editor that works o ...

  5. EM算法——有隐含变量时,极大似然用梯度法搞不定只好来猜隐含变量期望值求max值了

    摘自:https://www.zhihu.com/question/27976634 简单说一下为什么要用EM算法 现在一个班里有50个男生,50个女生,且男生站左,女生站右.我们假定男生的身高服从正 ...

  6. sublime界面主题

    一直以来都是使用的SUBLIME,真的很强大. 最近刚转到linux来学习C,把它重新配置了一遍,默认的字体颜色的搭配已经很不错了.不过界面的样子还是不太习惯.重新安装了下soda这个主题包,惭愧!即 ...

  7. Wannafly挑战赛25 A 因子 数学

    题面 题意:令 X = n!,给定一大于1的正整数p,求一个k使得 p ^k | X 并且 p ^(k + 1) 不是X的因子,n,,p(1e18>=n>=1e4>=p>=2) ...

  8. Solr.NET快速入门(三)【高亮显示】

    此功能会"高亮显示"匹配查询的字词(通常使用标记),包括匹配字词周围的文字片段. 要启用高亮显示,请包括HighlightingParameters QueryOptions对象, ...

  9. Android通过百度地图API用Service和Alarm在后台定时获取地理位置信息

    本文主要介绍了Android项目集成百度地图API,使用AlarmManager定时调用Service,在Service中请求坐标更新,并通过坐标得到省.市和县三级地理位置信息的方法. 程序结构很简单 ...

  10. linux+nginx+python+django环境配置

    Django是一个开放源代码的Web应用框架,由Python写成,它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的.python+django也是web开发者最受欢迎的框架.今天 ...