zoukankan      html  css  js  c++  java
  • 什么是XML?

    相信很多人在学习java web的时候都会很疑惑XML是什么?xmlns是什么?xmlns:xsi,xsi:schemalLocation又是什么?首先我们要了解

    What is XML

    XML全称可扩展标记语言英语:Extensible Markup Language,简称:XML),是一种标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,既可以选择国际通用的标记语言,比如HTML,也可以使用像XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从标准通用标记语言(SGML)中简化修改出来的。它主要用到的有可扩展标记语言、可扩展样式语言XSL)、XBRLXPath等。

    The history of XML

    XML是从1995年开始有其雏形,并向W3C万维网联盟)提案,而在1998年二月发布为W3C的标准(XML1.0)。XML的前身是SGMLThe Standard Generalized Markup Language),是自IBM从1960年代就开始发展的GMLGeneralized Markup Language)标准化后的名称。

    GML的重要概念:

    • 文件中能够明确的将标示与内容分开
    • 所有文件的标示使用方法均一致

    1978年,ANSIGML加以整理规范,发布成为SGML,1986年起为ISO所采用(ISO 8879),并且被广泛地运用在各种大型的文件计划中,但是SGML是一种非常严谨的文件描述法,导致过于庞大复杂(标准手册就有500多页),难以理解和学习,进而影响其推广与应用。

    同时W3C也发现到HTML的问题:

    • 不能解决所有解释数据的问题 - 像是影音档或化学公式、音乐符号等其他形态的内容。
    • 性能问题 - 需要下载整份文件,才能开始对文件做搜索。
    • 扩充性、弹性、易读性均不佳。

    为了解决以上问题,专家们使用SGML精简制作,并依照HTML的发展经验,产生出一套使用上规则严谨,但是简单的描述数据语言:XML

    XML是在一个这样的背景下诞生的——为了有一个更中立的方式,让消费端自行决定要如何消化、呈现从服务端所提供的信息。

    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位用来对字符进行编码。

    第二行,xmlnsXML 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

            

  • 相关阅读:
    5- MySQL数据库SELECT查询操作
    4- MySQL创建表以及增删改查
    3- MySQL数据类型
    2- MySQL客户端工具Workbench的使用及数据库的操作
    4-1 Postman脚本的应用
    ImportError: cannot import name HTTPSHandler
    python zlib模块缺失报错:RuntimeError: Compression requires the (missing) zlib module
    make 命令出现:"make:*** No targets specified and no makefile found.Stop."
    用Wget下载的文件在哪里可以找到。。
    Linux wget命令详解
  • 原文地址:https://www.cnblogs.com/sunny-daylk/p/8597062.html
Copyright © 2011-2022 走看看