什麼是XML?

相信不少人在學習java web的時候都會很疑惑XML是什麼?xmlns是什麼?xmlns:xsi,xsi:schemalLocation又是什麼?首先咱們要了解php

What is XMLjava

XML全稱可擴展標記語言英語:Extensible Markup Language,簡稱:XML),是一種標記語言。標記指計算機所能理解的信息符號,經過此種標記,計算機之間能夠處理包含各類信息的文章等。如何定義這些標記,既能夠選擇國際通用的標記語言,好比HTML,也可使用像XML這樣由相關人士自由決定的標記語言,這就是語言的可擴展性。XML是從標準通用標記語言(SGML)中簡化修改出來的。它主要用到的有可擴展標記語言、可擴展樣式語言XSL)、XBRLXPath等。web

The history of XMLapp

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的問題: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位用來對字符進行編碼。

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

相關文章
相關標籤/搜索