天天看點

XML【介紹、用途、了解XML技術架構、文法】

什麼是XML?

XML:extensiable markup language 被稱作可擴充标記語言

XML簡單的曆史介紹:

  • gml->sgml->html->xml
  • gml(通用标記語言)–在不同的機器進行通信的資料規範
  • sgml(标準通用标記語言)
  • html(超文本标記語言)

為什麼我們需要使用XML呢?

  • ①我們沒有XML這種語言之前,我們使用的是String作為兩個程式之間的通訊!現在問題就來了,如果我們傳輸的是帶有關系型結構的資料,String怎麼表達呢?String對關系型資料不擅長,要是描述起來也難免會有歧義的時候!關系型資料如圖下所示:
XML【介紹、用途、了解XML技術架構、文法】
  • ②HTML語言本身就有缺陷:
    • 标記都是固定的,不能自定義。HTML語言中有什麼标記就隻能用什麼标記
    • HTML标簽本身就缺少含義(tr标簽裡面什麼内容都能放進去,不規範!)
    • HTML沒有實作真正的國際化

XML檔案就解決了以上的問題了,如果使用XML描述上述圖檔的關系,是非常簡單的!

<?xml version="1.0" encoding="UTF-8" ?>
    <中國>
        <北京>
            <海澱></海澱>
            <豐台></豐台>
        </北京>
        <湖南>
            <長沙></長沙>
            <嶽陽></嶽陽>
        </湖南>
        <湖北>
            <武漢></武漢>
            <荊州></荊州>
        </湖北>
    </中國>

           

XML檔案還能使用浏覽器打開:

XML【介紹、用途、了解XML技術架構、文法】

我們可以發現XML是可以描述很複雜的資料關系的

XML的用途

①:配置檔案(例子:Tomcat的web.xml,server.xml……),XML能夠非常清晰描述出程式之間的關系

②:程式間資料的傳輸,XML的格式是通用的,能夠減少交換資料時的複雜性!

③:充當小型資料庫,如果我們的資料有時候需要人工配置的,那麼XML充當小型的資料庫是個不錯的選擇,程式直接讀取XML檔案顯然要比讀取資料庫要快呢!

XML的技術架構

XML被設計為“什麼都不做”,XML資料或XML文檔隻用于組織、存儲資料,除此之外的資料生成、讀取、傳送、存取等等操作都與XML本身無關!

于是乎,想要操作XML,就需要用到XML之外的技術了:

  • 為XML定規則:現在一般使用DTD或Schema技術,當然了Schema技術更為先進!
  • 解析XML的資料:一般使用DOM或者SAX技術,各有各的優點
  • 提供樣式:XML一般用來存儲資料的,但設計者野心很大,也想用來顯示資料(但沒人用XML來顯示資料),就有了XSLT(eXtensiable Stylesheet Language Transformation)可擴充樣式轉換語言

XML文法:

文檔聲明:

  • XML聲明放在XML的第一行
  • version—-版本
  • encoding–編碼
  • standalone–獨立使用–預設是no。standalone表示該xml是不是獨立的,如果是yes,則表示這個XML文檔時獨立的,不能引用外部的DTD規範檔案;如果是no,則該XML文檔不是獨立的,表示可以引用外部的DTD規範文檔。
  • 正确的文檔聲明格式,屬性的位置不能改變!
<?xml version="1.0" encoding="utf-8" standalone="no"?>
           

元素

首先在這裡說明一個概念:在XML中元素和标簽指的是同一個東西!不要被不同的名稱所迷惑了!

元素中需要值得注意的地方:

  • XML元素中的出現的空格和換行都會被當做元素内容進行處理
  • 每個XML文檔必須有且隻有一個根元素
  • 元素必須閉合
  • 大小寫敏感
  • 不能交叉嵌套
  • 不能以數字開頭

看起來好像有很多需要值得注意的地方,其實隻需要記住:XML的文法是規範的!不要随意亂寫!

屬性

屬性是作為XML元素中的一部分的,命名規範也是和XML元素一樣的!

<!--屬性名是name,屬性值是china-->
    <中國 name="china">

    </中國>

           

注釋

注釋和HTML的注釋是一樣的

<!---->
           

CDATA

在編寫XML檔案時,有些内容可能不想讓解析引擎解析執行,而是當作原始内容處理。遇到此種情況,可以把這些内容放在CDATA區裡,對于CDATA區域内的内容,XML解析程式不會處理,而是直接原封不動的輸出

文法:

<![CDATA[
        ...内容
    ]]>
           

轉義字元

對于一些單個字元,若想顯示其原始樣式,也可以使用轉義的形式予以處理。

XML【介紹、用途、了解XML技術架構、文法】

處理指令

處理指令,簡稱PI (processing instruction)。處理指令用來指揮解析引擎如何解析XML文檔内容。

例如:

在XML文檔中可以使用xml-stylesheet指令,通知XML解析引擎,應用css檔案顯示xml文檔内容。

<?xml-stylesheet type="text/css" href="1.css"?>
           
  • XML代碼:
<?xml version="1.0" encoding="UTF-8" ?>
    <?xml-stylesheet type="text/css" href="1.css"?>

    <china>
        <guangzhou>
            廣州
        </guangzhou>
        <shenzhen>
            深圳
        </shenzhen>
    </china>

           
  • CSS代碼:
guangzhou{
        font-size: 40px;
    }
           
  • 效果:

JDK中的XML API

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>