了解XML
    XML的全称是eXtensible Markup Language,即可扩展标记语言,它提供了一套可跨平台、跨网络、跨程序语言的数据描述方式。
    XML主要包括文档声明和文档内容两部分。
    文档声明是一个XML文档所必需的,必须在文档第一行,需要说明版本+编码方式。
    文档内容是通过标记有序地展现出来的,标记是用来描述内容结构的元数据,不能包含内容。
    1.每个标记都必须包括开始和结束标记;
    2.标记名称大小写敏感;
    3.一个CML文档有且只有一个根标记;
    XML历史
    1998年2月,W3C发布了XML1.0标准;
    2007年11月发布了XML1.0的第五版;
    其目的是在Web上能以现有的超文本标记语言(HTML)的使用方式提供,接受和处理通用的SGML。XML是SGML的一个简化子集。
    2004年2月4日发布了XML1.1的推荐标准;
    2006年8月发布了第二版,最新版本,不过目前大多数应用还是基于1.0版本。
    XML与其他语言的比较
    image.png
    SGML、HTML和XML之间的关系?
    1.SGML是一种在Web发明之前就已经存在的,是一种定义标记语言的源语言;
    2.HTML和XML都是从SGML定义下的一个描述性的语言,只是SGML的一个应用,其DTD作为标准被固定下来;
    3.XML是SGML的一个简化版本,严格来说,XML仍然是SGML。
    XML语法基础
    文档分类
    格式不良好的XML文档:不满足XML语法规则
    格式良好的XML:满足XML语法规则
    有效的XML文档:满足XML语法规则同时符合DTD或Schema语义约束
    XML文档声明
    属性说明:
    version:必须包含,合法值为1.0或1.1
    encoding:可以忽略,默认值为utf-8
    standalone:可以被忽略,制定该XML文档是否和一个外部问大哥搭配使用。该属性为yes是说明当前XML文档是一个独立的XML文档,与外部文件无关联。否则相反。当省略该属性时,属性的默认值为yes。
    文档类型声明 用来声明DTD或Schema
    <!DOCTYPE china SYSTEM “mydtd.dtd”>
    引用一个外部DTD文件,且该文件与XML文件处于同一个文件夹下面
    处理指令(Processing Instructions,建成Pls)
    允许文档中包含由应用程序来处理的指令。在XML文档中,有可能会包含一些非XML格式的数据,XML处理器 无法处理这些数据,我们就可以通过处理指令来通知其他应用程序来处理这些数据。
    处理指令(Pl)的语法和XML声明类似:
    <?xml-stylesheet href=”hello.css” type=”text/css”?>
    <?xml-stylesheet href=”hello.xsl” type=”text/xsl”?>
    xml-stylesheet处理指令总是放在XML声明之后,第一个元素之前,其他处理指令可以放在除标记内部和XML 声明之前的任意位置。
    注释 以”“结束
    1.注释不可以出现在XML声明之前
    2.注释不可以出现在标记中
    3.注释可以包围和隐藏标记,但是要注意的是,在增加注释后,要保证剩余的文本仍然是一个结构完整的XML文档
    4.字符串”—“(双连字符)不能在注释中出现
    错误的
    5.注释不能以”—->”结尾

    XML元素构成
    区分标记、元素和属性
    标记是由<>包含的对象,例如:就是一个标记。标记通常包括两种:开始标记和结束标记。
    元素通常包括开始标记、结束标记以及标记的内容,是文件的基本对象,是通过标记进行定义的。
    属性是为元素附加信息,总是以“属性名=“属性值””的形式给出。
    元素的形式:空元素和非空元素
    空元素不能包括内容也不能包括子元素。
    两种书写方式:
    单标记,这种方式常见并且建议使用,可以包括属性,属性个数不受限制。
    双标记,不建议使用,容易出错。
    如果双标记中出现空格,此时不再是空标记;
    如果双标记的开始标记和结束标记不位于同一行,此时也不是空标记。
    非空元素
    所有元素都是双标记
    1.带有文本内容的元素
    2.带有子元素的元素
    3.同时带有子元素及文本内容的元素,这种类型的元素不建议使用
    XML元素的内容 可以包含子元素、字符数据、字符引用和实体引用、CDATA段、空白处理、行尾处理、语言标识
    字符数据(不包括任何标记的其实定界符和CDATA段的结束定界符的任意定界符),也即是说,在元素的内容中,字符数据不能由和号(&)和小于号(<),也不能有字符串“]]>”
    字符引用和实体引用
    字符引用和实体引用都是以一个和号(&)开始并以一个分号(;)结束。如果采用的是字符引用,需要在和号(&)之后加上一个井号(#),之后是所需字符的十进制代码或十六进制代码;如果采用的是实体引用,在和号(&)之后写上字符的助记符。
    image.png
    CDATA段
    以字符串“<![CDATA[”开始,以字符串“]]>”结束。中间包含的都是纯字符数据,但字符数据可以是不包含CDATA段的结束定界符的任意字符串。在字符数据可以出现的任何地方都可以使用CDATA段。
    1.XML处理器不处理
    2.可以包括 < > “ ‘ &等字符
    3.不可以再次嵌套
    4.不可以包含结束定界符“]]>”
    空白处理
    在xml规范中,空白包括空格、制表符和空行。XML处理器总是将文档中不是标记的所有字符都传递给应用程序,一个进行有效性验证的XML处理器会通知应用程序这些字符中哪一些组成了出现在元素内容中的空白。
    在XML文档中,可以在元素中使用一个特殊的属性xml:space,来通知应用程序保留此元素中的空白。xml:space属性接受两个值。
    default:辞职匀速应用程序根据需要处理空白。如果不包含xml:space属性,结果与使用default值相同。
    preserve:此值表示应用程序按原样保留空白,空白可能有含义。
    因为目前很多XML应用程序并不识别xml:space属性,所以该属性只是一个建议。