zoukankan      html  css  js  c++  java
  • XML学习笔记1——概述

      我对于XML是很不够重视的,认识也是非常肤浅的,因为在之前的Web经验中,基本上都可以使用JSON来代替XML,JSON网络流量少,解析快,JS支持好等这些特点让我对自己的观点坚信不疑。然而我渐渐地改变了这些观点,最近写了一个基于Spring的服务配置体系,主要思想是将一些常用的服务封装成服务类,预留一些参数接口,然后通过Spring注入这些参数以及服务类之间的各种关系,实现业务逻辑配置化,尽最大可能地实现代码复用、易于维护等,在实际开发以及运用时,Spring配置文件变得越来越大,于是产生了能否将服务配置剥离出来单独管理的想法,但是这个想法一开始就遭遇了非常大的挫折——这源于我在XML领域的无知。于是想,不如趁这个机会,补一补XML的知识吧!

    1、XML概述

    (1)XML全称是Extensible Markup Language,即可扩展标记语言,从名称上看,首先XML是一种标记语言,比较简单,不同于C、Java这样的编程语言,其次XML这种标记语言是可扩展的,不同于HTML(Hypertext Markup Language,超文本标记语言)内置了大量的标签,HTML不具备可扩展性,数据逻辑与表现逻辑混在一起,而XML可以自由扩展,只负责存储数据,不管数据是怎么显示的。

    (2)XML可以分为三类:

    A:不符合格式的XML文档(malformed):实际上这已经不是XML文档了,因为没有遵守最基本的XML文档规则。

    B:符合格式的XML文档(well-formed):遵守了XML文档的基本规则,但是没有使用DTD或Schema等语义约束,或者使用了DTD或Schema语义约束然而文档并没有完全遵守相应的语义约束。

    C:有效的XML文档(valid):遵守了XML文档的基本规则,并且使用DTD或Schema语义约束同时完全遵守了这些语义约束。

    这里XML文档的分类基于“XML文档的基本规则“,那么这些基本规则有哪些?

    (3)XML文档的基本规则

    A:有且仅有一个根元素

    B:元素必须有相应的结束标签

    C:元素之间必须正确嵌套,不要你中有我,我中有你,分不清谁主谁次

    D:元素的属性必须有值,值使用单引号或双引号括起来,也就是说元素的属性后面必须要有单引号或双引号,至于引号里面的内容那就不管了,多个属性之间的顺序也是随意的

    符合基本规则的XML文档都能转化成一个树形结构。

    当然,XML文档的基本规则题中应有之义就包括了元素名称、属性名称这些也是合法的标识符了。

    2、XML声明

    我们常常可以看到,在XML文档的第一行往往是类似于下面的文本,这个文本称之为XML声明。

    <?xml version="1.0" encoding="UTF-8" standlone="yes"?>

    (1)XML声明以<?xml开始,以?>结束。

    (2)XML声明中的版本属性version是必须的,通常为1.0,表示这个文档遵守XML 1.0标准。

    (3)字符集属性encoding是可选的,默认值是UTF-8。

    (4)属性standlone也是可选的,表示是否需要引用其他资源,值只能是yes或no

    3、标签名

    (1)标签名称是区分大小写的,name和Name表示两个标签名

    (2)标签名可以由字母(可以是中文)、数字、下划线、中划线、冒号和点号组成,但不能以数字、中划线和点号开头

    (3)标签名不能包括<、>、,、$、空格等特殊符号,也不要以xml(或xml任意大小组合)开头

    (4)尽量不要出现英文冒号,除非是使用命名空间

    关于标签名称,类似于其它语言中的变量名,无需太在意,一般也不至于出错,除非你要想方设法的去验证XML工具的正确性。

    4、实体引用

    在XML文档中,因为标签是使用尖括号括起来的,所以尖括号在XML文档内容中就有了特殊的意思了,不想麻烦的话最好就使用实体引用来表示这些特殊符号了(类似于其它语言中的转义,将特殊符号的含义转义为符号表示的字符本身),内置的实体引用有5个,当然,你也可以自定义实体引用——这是后话:

    实体引用 所代表的符号 说明
    &lt; < 小于符号
    &gt; > 大于符号
    &amp; & and符号
    &apos; ' 英文单引号
    &quot; " 英文双引号

    这种格式是不是很熟悉?和HTML中的差不多,以”&“开头,以";"结尾,只不过HTML内置的实体引用要多一些。

    如果标签内容有很多实体引用,那将会是非常不雅观的,在XML中,还可以使用CDATA标记来标记一整段内容,使其中的内容都完全忠实于符号本身,格式如下:

    <![CDATA[这里的内容都将忠实于字符本身]]

    看个例子:

    <?xml version="1.0" encoding="UTF-8" standlone="no"?>
    <root>
        <!--CDATA区域示例-->
        <![CDATA[
          <name>
           别看这里<name>貌似元素标签名,实际只表示"<name>"这段文本而已    
          </name>
        ]]>
    </root>

    你已经看到了,里面的<!-- ... -->表示注释,关于注释,不要:

    (1)不要放在标签内部,否则,它将破坏XML文档的结构

    (2)不要把注释放在XML声明之前,XML声明永远放在文档的第一行

    (3)不要在注释中间使用 -- ,这会混淆的,自然,注释的内容也不要以 -->结尾了

    5、处理指令

    XML还提供了称之为处理指令的语法,用来告诉处理程序怎么处理,开发者可以定义任意的处理指令,并关联合适的程序来解析该指令

    XML处理指令的格式为:

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

    从形式上看,可以把XML声明看作指令名为xml的处理指令。另外一个常见的处理指令是xml-stylesheet,用于为XML文档导入样式表(如css样式表、xsl样式表)。如:

    <?xml version="1.0" encoding="UTF-8" standlone="no"?>
    <?xml-stylesheet type="text/css" href="public.css"?>
    <?xml-stylesheet type="text/xsl" href="public.xsl"?>
    <root> </root>
  • 相关阅读:
    HDU 1800 Flying to the Mars 字典树,STL中的map ,哈希树
    字典树 HDU 1075 What Are You Talking About
    字典树 HDU 1251 统计难题
    最小生成树prim算法 POJ2031
    POJ 1287 Networking 最小生成树
    次小生成树 POJ 2728
    最短路N题Tram SPFA
    poj2236 并查集
    POJ 1611并查集
    Number Sequence
  • 原文地址:https://www.cnblogs.com/linjisong/p/3296991.html
Copyright © 2011-2022 走看看