XML文件结构和基本语法

XML文件的结构性内容,包括节点关系以及属性内容等等。
元素是组成XML的最基本的单位,它由开始标记,属性和结束标记组成。
就是一个元素的例子,每个元素必须有一个元素名,元素可以若干个属性以及属性值。
 xml文件和html文件一样,实际上是一个文本文件。显然大家立刻就会明白,创建xml文件最普通的工具和html一样,就是“记事本”了。
一个xml文件的例子
  现在我们暂且使用“记事本”来创建我们的xml文件吧。先看一个xml文件:
  例1
  〈?xml version="1.0" encoding="gb2312" ?〉
  〈参考资料〉
   〈书籍〉
        〈名称〉xml入门精解〈/名称〉
        〈作者〉张三〈/作者〉
        〈价格 货币单位="人民币"〉20.00〈/价格〉
   〈/书籍〉
   〈书籍〉
        〈名称〉xml语法〈/名称〉
        〈!--此书即将出版--〉
        〈作者〉李四〈/作者〉
        〈价格 货币单位="人民币"〉18.00〈/价格〉
   〈/书籍〉
  〈/参考资料〉
  ——————————————————————
  这是一个典型的xml文件,编辑好后保存为一个以.xml为后缀的文件。我 们可以将此文件分为文件序言(prolog)和文件主体两个大的部分。在此文件中的第一行即是文件序言。该行是一个xml文件必须要声明的东西,而且也必 须位于xml文件的第一行,它主要是告诉xml解析器如何工作。其中,version是标明此xml文件所用的标准的版本号,必须要有;encoding 指明了此xml文件中所使用的字符类型,可以省略,在你省略此声明的时候,后面的字符码必须是unicode字符码(建议不要省略)。
  文件的其余部分都是属于文件主体,xml文件的内容信息存放在此。我们可以看到,文件主体是由开始的〈参考资料〉和结束的〈/参考资料〉控制标记组成,这 个称为xml文件的“根元素”;〈书籍〉是作为直属于根元素下的“子元素”;在〈书籍〉下又有〈名称〉、〈作者〉、〈价格〉这些子元素。货币单位是〈价 格〉元素中的一个“属性”,“人民币”则是“属性值”。元素与属性的关系如图1。
  〈!--此书即将出版--〉这一句同html一样,是注释,在xml文件里,注释部分是放在“〈!--”与“--〉”标记之间的部分。
  大家可以看到,xml文件是相当简单的。同html一样,xml文件也是由一系列的标记组成,不过,xml文件中的标记是我们自定义的标记,具有明确的含义,我们可以对标记中的内容的含义作出说明。
xml文件的语法
  对xml文件有了初步的印象之后,我们就来详细地谈一谈xml文件的语法。在讲语法之前,我们必须要了解一个重要的概念,就是xml解析器(xml parse)。
1. xml解析器
  解析器的主要功能就是检查xml文件是否有结构上的错误,剥离xml文件中的标记,读出正确的内容,以交给下一步的应用程序处理。xml是一种用来结构化文件信息的标记语言,xml规范中对于如何标记文件的结构性有一个详细的法则,解析器就是根据这些法则写出来的软件(多用java写成)。
2. well-formed的xml文件
  我们知道,xml必须是well-formed的,才能够被解析器正确地解析出来,显示在浏览器中。那么什么是well-formed的xml文件呢?主要有下面几个准则,我们在创建xml文件的时候,必须满足它们。
  首先,xml文件的第一行必须是声明该文件是xml文件以及它所使用的xml规范版本。在文件的前面不能够有其它元素或者注释。
  第二,在xml文件中有且只能够有一个根元素。我们的第一个例子中,〈参考资料〉... 〈/参考资料〉就是此xml文件的根元素。
xml文件中,用的大多都是自定义的标记。
   第三,在xml文件中的标记必须正确地关闭,也就是说,在xml文件中,控制标记必 须有与之对应的结束标记。如:〈名称〉标记必须有对应的〈/名称〉结束标记,不像html,某些标记的结束标记可有可无。如果在xml文件中遇到自成一个 单元的标记,就是类似于html 中的〈img src=.....〉的这些没有结束标记的时候,xml把它称为“空元素”,必须用这样的写法:〈空元素名/〉,如果元素中含有属性时写法则为:〈空元素 名 属性名=“属性值”/〉。
  第四,标记之间不得交叉。在以前的html文件中,可以这样写:
  〈b〉〈h〉xxxxxxx〈/b〉〈/h〉,〈b〉和〈h〉
  标记之间有相互重叠的区域,而在xml中,是严格禁止这样标记交错的写法,标记必须以规则性的次序来出现。
  第五,属性值必须要用“ ”号括起来。如第一个例子中的“1.0”、“gb2312”、“人民币”。都是用“ ”号括起来了的,不能漏掉。
  第六,控制标记、指令和属性名称等英文要区分大小写。与html不同的是,在html中, 类似〈b〉和〈b〉的标记含义是一样的,而在xml中,类似〈name〉、〈name〉或〈name〉这样的标记是不同的。
   第七,我们知道,在html文件中,如果我们要浏览器原封不动地将我们所输入的东西显示出来,可以将这些东西放到〈pre〉〈/pre〉或者〈xmp〉 〈/xmp〉标记中间。这对于我们创建html教学的网页是必不可少的,因为网页中要显示html的源代码。而在xml中,要实现这样的功能,就必须使用 cdata标记。在cdata标记中的信息被解析器原封不动地传给应用程序,并且不解析该段信息中的任何控制标记。cdata区域是由:“〈! [cdata[”为开始标记,以“]]〉”为结束标记。例如:例2中的源码,除了“〈![cdata[”和“]]〉”符号,其余的内容解析器将原封不动地 交给下游的应用程序,即使cdata区域中的开始和结尾的空白以及换行字符等,都同样会被转交(注意cdata是大写的字符)。

1  XML 的声明

<?xml version=”1.0” standalone=”yes” encoding=”UTF-8”?>


    这是一个XML处理指令。处理指令以 <? 开始,以 ?> 结束。<? 后的第一个单词是指令名,如xml, 代表XML声明。
    version, standalone, encoding 是三个特性,特性是由等号分开的名称-数值对,等号左边是特性名称,等号右边是特性的值,用引号引起来。

几点解释:

  • version: 说明这个文档符合1.0规范
  • standalone: 说明文档在这一个文件里还是需要从外部导入, standalone 的值设为yes 说明所有的文档都在这一文件里完成 
  • encoding: 指文档字符编码


2  
XML 根元素定义

XML文档的树形结构要求必须有一个根元素。根元素的起始标记要放在所有其它元素起始标记之前,根元素的结束标记根放在其它所有元素的结束标记之后,如

 

<?xml version=”1.0” standalone=”yes” encoding=”UTF-8”?>
<Settings>
<Person>Zhang San</Person>
</Settings>

 


3  
XML元素

元素的基本结构由 开始标记,数据内容,结束标记组成,如

<Person>
  <Name>Zhang San</Name>
  <Sex>Male</Sex>
</Person>


需要注意的是:

  • 元素标记区分大小写,<Name> 与 <name>是两个不同的标记
  • 结束标记必须有反斜杠,如 </Name>

XML元素标记命名规则如下:

  • 名字中可以包含字母,数字及其它字母
  • 名字不能以数字或下划线开头
  • 名字不能用xml开头
  • 名字中不能包含空格和冒号


4  
XML中的注释

XML中注释如下:

<!-- this is comment -->


需要注意的是:

  • 注释中不要出现“--”或“-”
  • 注释不要放在标记中
  • 注释不能嵌套 


5  PI  (Processing Instruction)
PI 指 Processing Instruction, 处理指令。PI以“<?”开头,以“?>”结束,用来给下游的文档传递信息。

<?xml:stylesheet href=”core.css” type=”text/css” ?>


例子表明这个XML文档用core.css控制显示。

 


6  
PCDATA 
  #PCDATA
: specifies that an element will contain parsed character data.
  举例说明PCDATA的用法, 其中movies.xml 存储电影内容数据,movies.dtd对movies.xml进行验证。

示例文件(movies.dtd)

<?xml version="1.0" encoding="GB2312"?>
<!ELEMENT movies (id, name, brief, time)>
<!ATTLIST movies type CDATA #REQUIRED>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT brief (#PCDATA)>
<!ELEMENT time (#PCDATA)>

id, name, brief, time只能包含非标记文本(不能有自己的子元素)。


XML文件如下所示(movies.xml):

<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE movies SYSTEM "movies.dtd">
<movies type="动作片">
    <id>1</id>
    <name>致命摇篮</name>
    <brief>李连杰最新力作</brief>
    <time>2003</time>
</movies>

 
7  
CDATA

CDATA用于需要把整段文本解释成纯字符数据而不是标记的情况。当一些文本中包含很多“<”,“>”,“&”,“””等字符而非标记时,CDATA会非常有用。

<Example>
<![CDATA[
  <Person>
      <Name>ZhangSan</Name>
      <Sex>Male</Sex>
  </Person>
]]>
</Example>


以“<![CDATA[” 开始,以“]]>”结束。注意,在CDATA段中不要出现结束定界符“]]>”。


8  
Entities(实体)
Entities(实体)是XML的存储单元,一个实体可以是字符串,文件,数据库记录等。实体的用处主要是为了避免在文档中重复输入,我们可以为一个文档定义一个实体名,然后在文档里引用实体名来代替这个文档,XML解析文档时,实体名会被替换成相应的文档。

XML为五个字符定义了实体名:

 

实体

字符

&lt;

&gt;

&amp;

&

&quot;

&apos;

 

 
定义并引用实体的示例:

<!DOCTYPE example [
  <!ENTITY intro "Here is some comment for entity of XML">
]>
<example>
    <hello>&intro;</hello>
</example>


9  DOCTYPE 
“<!DOCTYPE[]>”紧随XML声明,包括所有实体的声明,如下所示:

<!DOCTYPE example [
  declare your entities here…
]>
<example>
    Body of document…
</example>

转载于:https://www.cnblogs.com/klb561/p/9196515.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python表格数据分类聚合_3-python数据分析-pandas高级操作之替换、映射、随机抽样、分组、高级数据聚合、数据加载、透视表、交叉表...

3-python数据分析-pandas高级操作之替换、映射、随机抽样、分组、高级数据聚合、数据加载、透视表、交叉表替换操作 replace替换操作可以同步作用于Series和DataFrame中单值替换普通替换&#xff1a; 替换所有符合要求的元素:to_replace15,value’e’按列指定单值替换&#xff…

oracle-SQL-case when 改用 DECODE

SELECT CASE FLOOR_LINE_ID WHEN 1 THEN 高铁 WHEN 2 THEN 高速 WHEN 3 THEN 公路 WHEN 5 THEN 地铁 ELSE 其他 END AS LINE_NAME, FLOOR_LINE_ID FROM ( SELECT FLOOR(LINE_ID/100) AS FLOOR_LINE_ID FROM DT4_LINE_NAME ) 改…

lcp mysql cluster_Mysql Cluster 非root用户启动ndbd节点报错

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼1.配置文件&#xff0c;如下&#xff1a;[rootcent178 ~]# ls -lart /etc/my.cnf-rw-rw-r-- 1 mysql mysql 3055 Oct 31 17:29 /etc/my.cnf2.集群数据存储文件夹&#xff0c;如下&#xff1a;[rootcent178 ~]# ls -lart /var/lib/m…

fatal: Could not read from remote repository.的解决办法

原文地址&#xff1a;http://blog.csdn.net/huahua78/article/details/52330792 --------------------------------------------------------------------------------- 查看远端地址 git remote –v 查看配置 git config --list git status git add . // 暂存所有的更改git…

python中mako中loop_python中Mako库实例用法

Mako是一个模板库。一种嵌入式的语言&#xff0c;能够实现简化组件布局以及继承&#xff0c;主要的用途也是和作用域有关&#xff0c;但是效果是最直接切灵活的&#xff0c;这些都是mako的基本功能&#xff0c;掌握了基础内容&#xff0c;接下来就是详细的了解讲述&#xff0c;…

springmvc是什么_SpringBoot与SpringMVC的区别是什么?

简单的来说&#xff1a;SpringMVC和SpringBoot都是Spring家族的重要成员。Spring家族的使命就是为了简化而生。SpringMVC简化我们日常Web开发的&#xff0c;后来随着自身的发展&#xff0c;SpringMVC变得臃肿复杂&#xff0c;而SpringBoot则进一步简化了SpringMVC开发。SpringM…

git 上传代码到码云

与码云建立连接教程&#xff1a;http://blog.csdn.net/zengmingen/article/details/76045076 如果完成了上面步骤的&#xff0c;且有了git。上传项目步骤&#xff1a; 代码提交 代码提交一般有五个步骤&#xff1a; 1.查看目前代码的修改状态 2.查看代码修改内容 3.暂存需要提交…

你不知道的js中关于this绑定机制的解析[看完还不懂算我输]

前言 最近正在看《你不知道的JavaScript》&#xff0c;里面关于this绑定机制的部分讲的特别好&#xff0c;很清晰&#xff0c;这部分对我们js的使用也是相当关键的&#xff0c;并且这也是一个面试的高频考点&#xff0c;所以整理一篇文章分享一下这部分的内容&#xff0c;相信看…

visual studio过期登录不了账户_具有最高管理权限账户,Windows 7设置Administrator密码永不过期...

今天介绍操作系统具有最高管理权限的账户&#xff0c;Windows 7如何设置Administrator账户密码永不过期。小伙伴们可能不知道&#xff0c;和Windows Vista操作系统一样&#xff0c;在Windows 7操作系统中是不能预先使用Administrator这个具有最高管理权限的账户的。同时也可能不…

Tomcat安装与环境变量的配置-Linux+windows

原文链接&#xff1a;http://jingyan.baidu.com/article/8065f87fcc0f182330249841.html ------------------------------------------------------------ 1&#xff0c;新建变量名&#xff1a;JAVA_HOME&#xff0c;变量值&#xff1a;C:\Program Files\Java\jdk1.7.0 2&…

python如何读取配置文件获取url以及hhead_读取INI配置文件内容(头文件head)

/************************************************************FileName: getini.h // 文件名称Author: yuanfen127 // 作者Date: 2005-03-31 // 日期Description: // 描述本文件的内容,功能,内部各部分之间的关系// 以及文本文件与…

cad隐藏图层命令快捷键_cad快捷键f是什么命令?cad中f快捷键都有哪些?

1. F1 该功能键打开AutoCAD帮助窗口。如果用户遇到此软件中的任何功能问题,它可以使用户在线获得帮助。如果用户离线工作,而不是按此键,则该软件的所有功能都将以PDF格式打开。 2. F2 该键将打开一个弹出屏幕,在底部显示命令行。该命令对于在屏幕底部看不到命令窗口的用户很…

angular2或4部署到tomcat中,让他跑起来

原文地址&#xff1a;http://blog.csdn.net/rotating_windmill/article/details/76768793 ------------------------------------------------------------------------- 首先使用构建命令(npm run build或ng build)打包&#xff0c;打包完成后项目中会出现一个dist的目录&…

java 高级编程进阶_JAVA高级编程之hibernate进阶学习

二级缓存hibernate的session缓存在事务级别进行持久化数据的缓存操作。 当然&#xff0c;也有可能分别为每个类(或集合)&#xff0c;配置集群、或 JVM 级别(SessionFactory 级别)的缓存。你甚至可以为之插入一个集群的缓存。注意&#xff0c;缓存永远不知道其他应用程序对持久化…

SpringMvc+Tomcat+Angular4 部署运行

这次的团队开发是&#xff0c;前端开发人员和后台开发人员完全分开开发的。 前端开发采用了Angular4&#xff0c;webstorm 后端开发采用了&#xff1a;springspringmvcmybatis&#xff0c;eclipse --------------------------------------- 最后要整合了。 1、angular项目编…

python爬虫本科容易找工作吗_python爬虫基础学完了,我真的能找到一份工作吗?...

1.能不能找到工作我觉得取决于你技术掌握的程度。2.无论在什么领域&#xff0c;只要你技术到家&#xff0c;都不用愁找不到工作。3.多数人问他们转行能不能找到工作&#xff0c;是想知道这个岗位需要的人多不多&#xff0c;在爬虫这个领域&#xff0c;从事这方面的人应该也不少…

jqgrid demo java_java – jqgrid如何显示服务器端消息

我使用jqGrid以表格格式显示数据,使用JSP和servlet.编辑我想在执行插入,更新,删除等操作时显示来自服务器的错误. (数据类型&#xff1a;“xml”)jqGrid的jQuery("#list10_d").jqGrid({height:250,width:600,url:Assignment?actionAssign,datatype: "xml"…

IPv4地址分类及特征

IPv4地址分类及特征 IP地址后斜杠和数字代表的意思 其中有这样一个IP地址的格式&#xff1a;IP/数字&#xff0c;例如&#xff1a;111.222.111.222/24这种格式平时在内网中用的不多&#xff0c;所以一下子看不懂&#xff0c;最后查了资料才知斜杠后的数字代表的是掩码的位数 “…

查看Scala编译的.class文件

Scala是基于JDK运行的&#xff0c;必然会生成Java的字节码文件.class文件。 如何查看&#xff1f; 编码IDE&#xff1a;IntelliJ IDEA 2017.2 x64 查看class文件工具&#xff1a;jd-gui scala代码如下&#xff1a; person.scala package cn.zengmg.day26class Person {val …

python传文件给堡垒机上远程的另一个机器_如何用hive调度堡垒机上的python脚本...

工作中&#xff0c;如果我们本地要操作的数据量大&#xff0c;那么主机是跑不起来python脚本的&#xff0c;这个时候&#xff0c;就要用到服务器(也叫堡垒机)了。那么如何用HIVE调用堡垒机上的python脚本呢&#xff1f;今天小白就总结一下步骤和一些注意事项~1.首先将Python脚本…