相信不少人在学习java web的时候都会很疑惑XML是什么?xmlns是什么?xmlns:xsi,xsi:schemalLocation又是什么?首先咱们要了解php
What is XMLjava
XML全称可扩展标记语言(英语:Extensible Markup Language,简称:XML),是一种标记语言。标记指计算机所能理解的信息符号,经过此种标记,计算机之间能够处理包含各类信息的文章等。如何定义这些标记,既能够选择国际通用的标记语言,好比HTML,也可使用像XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从标准通用标记语言(SGML)中简化修改出来的。它主要用到的有可扩展标记语言、可扩展样式语言(XSL)、XBRL和XPath等。web
The history of XMLapp
XML是从1995年开始有其雏形,并向W3C(万维网联盟)提案,而在1998年二月发布为W3C的标准(XML1.0)。XML的前身是SGML(The Standard Generalized Markup Language),是自IBM从1960年代就开始发展的GML(Generalized Markup Language)标准化后的名称。性能
GML的重要概念:学习
1978年,ANSI将GML加以整理规范,发布成为SGML,1986年起为ISO所采用(ISO 8879),而且被普遍地运用在各类大型的文件计划中,可是SGML是一种很是严谨的文件描述法,致使过于庞大复杂(标准手册就有500多页),难以理解和学习,进而影响其推广与应用。编码
同时W3C也发现到HTML的问题:spa
为了解决以上问题,专家们使用SGML精简制做,并依照HTML的发展经验,产生出一套使用上规则严谨,可是简单的描述数据语言:XML。设计
XML是在一个这样的背景下诞生的——为了有一个更中立的方式,让消费端自行决定要如何消化、呈现从服务端所提供的信息。code
XML被普遍用来做为跨平台之间交互数据的形式,主要针对数据的内容,经过不一样的格式化描述手段(XSLT,CSS等)能够完成最终的形式表达(生成对应的HTML,PDF或者其余的文件格式)。
Apply
XML设计用来传送及携带数据信息,不用来表现或展现数据,HTML语言则用来表现数据,因此XML用途的焦点是它说明数据是什么,以及携带数据信息。XML文档·必须匹配文档类型定义(DTD)或XML纲要,XML文件的第二行并不必定要包含文档元素;若是有注释或者其余内容,文档元素能够迟些出现。XML的结构有一个缺陷,那就是不支持分帧(framing)。当多条XML消息在TCP上传输的时候,没法基于XML协议来肯定一条XML消息是否已经结束。
example:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
第一行很好理解,version即指XML的版本,encodeing指XML文件的编码格式。这里编码也简单说一下吧,偶尔当咱们打开文件时,文件虽然能打开,可是倒是乱码。世界上存在着多种编码方式,同一个二进制数字能够被解释成不一样的符号,所以,要想打开一个文本文件,就必须知道它的编码方式。UTF-8是互联网上使用最广的一种Unicode的实现方式,UTF-8是一种变长的编码方式,它能够根据1-6个字节表示一个符号,根据不一样的符号,而变化字节长度。对于单字节的UTF-8,该字节的最高位为0,其他7位用来对字符进行编码;对于多字节的UTF-8编码,若是编码包含多个字节,那么第一个字节的最高最高两位为01,该字节的剩余各位用来对字符进行编码。第一个字节以后的全部字节,都是最高两位为10,其他6位用来对字符进行编码。
第二行,xmlns即XML namespace,也叫作XML的命名空间,用于在一个XML文档中提供名字惟一的元素和属性,XML命名空间在W3C推荐规范《Namespaces in XML》中定义。XML命名空间于1999年1月14日成为W3C的推荐规范。W3C将XML命名空间定义为以国际化资源标识符(Internationalized Resource Identifier,IRI)引用为标识的元素名和属性名的集合。
为何要使用命名空间?一个XML文档可能包括来自多个XML词汇表的元素或属性,若是每个词汇表指派一个命名空间,那么相同名字的元素或属性之间的名称冲突就能够解决。举一个简单的例子来讲,在一个订单的XML文档中须要引用到客户和所购买的产品,customer元素和product元素可能都有一个叫作id的子元素。这时候要引用id元素会形成名称冲突,可是若是将两个id元素放到不一样的命名空间中就会解决这个问题。
而xmlns附带的xsi指xml schema instance,是指当前xml所要遵循的标签规范。这里补充一下,XML 解析器能够根据 一个 XSD 文件的内容来解析另外一个 XML 文件, 判断该文件的结构是否和 XSD 文件中定义的一致。 XSD 文件 能够理解为 XML 文档能够自定义的语法或格式检查器
再看
上面一行的语法是:xsi:schemaLocation = "键" "值",中间用空格分开,前一个”键“指代命名空间,后一个”值“指代XSD Location URL,这个值指示了前一个命名空间所对应的 XSD 文件的位置, xml parser 能够利用这个信息获取到 XSD 文件, 从而经过 XSD 文件对所属命名空间的元素结构进行校验。javaee和web的值同理。
参考文档:https://zh.wikipedia.org/wiki/XML%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4
https://zh.wikipedia.org/wiki/XML