可延伸標示語言

本页使用了标题或全文手工转换,现处于台湾繁体模式
求聞百科,共筆求聞
可擴展標記語言
副檔名.xml
網路媒體型式
  • application/xml
  • text/xml[1]
統一類型標識public.xml
UTI結構public.text
開發者全球資訊網協會
格式類型標記式語言
延伸自SGML
延伸成
標準
自由格式

可延伸標記式語言(英語:Extensible Markup Language,簡稱:XML)是一種標記式語言。XML是從標準通用標記式語言(SGML)中簡化修改出來的。它主要用到的有可延伸標記式語言、可延伸樣式語言(XSL)、XBRLXPath等。

歷史

XML的前身是SGMLThe Standard Generalized Markup Language),是自IBM從1960年代就開始發展的GMLGeneralized Markup Language)標準化後的名稱。

GML的重要概念:

  • 檔案中能夠明確的將標示與內容分開
  • 所有檔案的標示使用方法均一致

1978年,ANSI將GML加以整理規範,發佈成為SGML,1986年起為ISO所採用(ISO 8879),並且被廣泛地運用在各種大型的檔案計劃中,但是SGML是一種非常嚴謹的檔案描述法,導致過於龐大複雜(標準手冊就有500多頁),難以理解和學習,進而影響其推廣與應用。

同時W3C也發現到HTML的問題:

  • 不能解決所有解釋資料的問題 - 像是影音檔或化學公式、音樂符號等其他形態的內容。
  • 效能問題 - 需要下載整份檔案,才能開始對檔案做搜尋。
  • 擴充性、彈性、易讀性均不佳。

為了解決以上問題,專家們使用SGML精簡製作,並依照HTML的發展經驗,產生出一套使用上規則嚴謹,但是簡單的描述資料語言:XML。

XML是在一個這樣的背景下誕生的——為了有一個更中立的方式,讓客戶端自行決定要如何消化、呈現從伺服器端所提供的資訊。

XML是從1995年開始有其雛形,並向W3C全球資訊網聯盟)提案,而在1998年二月發佈為W3C的標準(XML1.0)。

XML被廣泛用來作為跨平台之間互動數據的形式,主要針對數據的內容,通過不同的格式化描述手段(XSLT,CSS等)可以完成最終的形式表達(生成對應的HTML,PDF或者其他的檔案格式)。

用途

RecipeBook的例子,一種基於XML語法上的烹飪技術書刊。此標籤可轉換為:HTML, PDF以及Rich Text Format並使用程式語言XSL

XML設計用來傳送及攜帶資料資訊,不用來表現或展示資料,HTML則用來表現資料,所以XML用途的焦點是它說明資料是什麼,以及攜帶資料資訊。

  • 富文件(Rich Documents)- 自訂檔案描述並使其更豐富
    • 屬於檔案為主的XML技術應用
    • 標記是用來定義一份資料應該如何呈現
  • 元資料(Metadata)- 描述其它檔案或網路資訊
    • 屬於資料為主的XML技術應用
    • 標記是用來說明一份資料的意義
  • 組態文件(Configuration Files)- 描述軟體設定的參數

重要術語

字元(characters)

XML 1.0規範允許的(跳脫後的最終解碼值)合法字元: #x9(水平制表符)、#xA(回車字元)、#xD(換行符)、#x20-#xD7FF、#xE000-#xFFFD、#x10000-#x10FFFF。即任何Unicode字元,不包含surrogate blocks, FFFE, FFFF。

XML規範定義了5個"預定義實體"來表示特殊字元. XML也允許在每個文件定義任意數量的其它命名實體.

下表列出了5個XML預定義實體. 通過名字參照這些實體的格式為&name;,例如, & 將繪製為&.

名字 字元 Unicode碼位(十進位) 標準 描述
quot " U+0022 (34) XML 1.0 雙引號
amp & U+0026 (38) XML 1.0 &
apos ' U+0027 (39) XML 1.0 撇號
lt < U+003C (60) XML 1.0 小於號
gt > U+003E (62) XML 1.0 大於號

處理器(Processor)與應用(application)

XML處理器(Processor,也稱作XML parser)分析標記式語言並傳遞結構化資訊給應用(application)。

標記(Markup)與內容(content)

XML文件的字元分為標記(Markup)與內容(content)兩類。標記通常以<開頭,以>結尾;或者以字元& 開頭,以;結尾。不是標記的字元就是內容。但是CDATA部分,分解符號<![CDATA[]]>是標記,二者之間的文字為內容。 最外界的空白符是標記。

標籤(Tag)

一個tag屬於標記結構,以<開頭,以>結尾。Tag名字是大小寫敏感,不能包括任何字元 !"#$%&'()*+,/;<=>?@[\]^`{|}~, 也不能有空格符, 不能以"-"或"."或數字開始。可分為三類:

  • start-tag,如<section>;
  • end-tag,如</section>;
  • empty-element tag,如<line-break />.

元素(Element)

元素是文件邏輯組成,或者在start-tag與匹配的end-tag之間,或者僅作為一個empty-element tag。例如:<greeting>Hello, world!</greeting>. 另一個例子是: <line-break />.

單個根(root)元素包含所有的其他元素。

屬性(Attribute)

屬性是一種標記結構,在start-tag或empty-element tag內部的「名字-值對」。例如:<img src="madonna.jpg" alt="Madonna" />。每個元素中,一個屬性最多出現一次,一個屬性只能有一個值。

如果屬性有多個值,這需要採取XML協定以外的方式來表示,如採用逗號或分號間隔,對於CSS類或識別碼的名字可用空格來分隔。

XML 聲明(declaration)

XML文件如果以XML declaration開始,則表述了文件的一些資訊。如<?xml version="1.0" encoding="UTF-8"?>.

XML定義結構、儲存資訊、傳送資訊。下例為小張傳送給大元的便條,儲存為XML。

<?xml version="1.0"?>
  <小纸条>
    <收件人>大元</收件人>
    <發件人>小張</發件人>
    <主題>問候</主題>
    <具體內容>早啊,飯吃了沒? </具體內容>
  </小纸条>

這XML文件僅是純粹的資訊標籤,這些標籤意義的展開依賴於應用它的程式。

結構

每個XML文件都由XML聲明開始,在前面的代碼中的第一行就是XML聲明,<?xml version="1.0"?>。這一行代碼會告訴解析器或瀏覽器這個檔案應該按照XML規則進行解析。

但是,根元素到底叫<小紙條>還是<小便條>,則是由文件類型定義(DTD)或XML綱要(XML Schema)定義的。如果DTD規定根元素必須叫<小便條>,那麼若寫作<小紙條>就不符合要求。這種不符合DTD或XML綱要的要求的XML文件,被稱作不合法的XML,反之則是合法的XML

XML檔案的第二行並不一定要包含文件元素;如果有注釋或者其他內容,文件元素可以遲些出現。

最常見的PI(processing instruction,像XML序言, 卻是不同類型的語法)是用來指定XML檔案的樣式表, 這個PI一般會直接放在XML序言之後,通常由Web瀏覽器使用,來將XML資料以特殊的樣式顯示出來。

XML的結構有一個缺陷,那就是不支援分影格(framing)。當多條XML訊息在TCP上傳輸的時候,無法基於XML協定來確定一條XML訊息是否已經結束。

參考文獻

  1. XML Media Types, RFC 7303. Internet Engineering Task Force. July 2014. 

延伸閱讀

外部連結

參見