# XML

维基百科，自由的百科全书

跳过字词转换说明

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

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

## [编辑] 歷史

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的問題：

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

為了解決以上問題，專家們使用SGML精簡製作，並依照HTML的發展經驗，產生出一套使用上規則嚴謹，但是簡單的描述資料語言：XML。 XML是在一個這樣的背景下誕生的——为了有一個更中立的方式，讓消費端自行決定要如何消化、呈現從服務端所提供的資訊。

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

## [编辑] 用途

XML设计用来传送及携带数据信息，不用来表现或展示数据，HTML语言則用来表现数据，所以XML用途的焦点是它说明数据是什么，以及携带数据信息。

- 丰富文件（Rich Documents）- 自定文件描述并使其更丰富
  - 属于文件为主的XML技术应用
  - 标记是用来定义一份资料应该如何呈现
- 元数据（Metadata）- 描述其它文件或网络资讯
  - 属于资料为主的XML技术应用
  - 标记是用来说明一份资料的意义
- 設定档案（Configuration Files）- 描述软件設定的参数

## [编辑] 例

XML定义结构、存储信息、传送信息。下例為張旭发送给陳貞伶的便条，存储为XML。

    <小纸条>
        <收件人>陳貞伶</收件人>
        <发件人>張旭</发件人>
        <主题>問候</主题>
        <具体内容>最近可好？</具体内容>
    </小纸条>

这XML文档仅是纯粹的信息标签，这些标签意义的展开依赖于应用它的程序。

## [编辑] 结构

每个XML文档都由XML序言开始，在前面的代码中的第一行便是XML序言，<?xml version="1.0"?>。这一行代码会告诉解析器和浏览器，这个文件应该按照前面讨论过的XML规则进行解析。第二行代码，<books>，则是文档元素（document element），它是文件中最外面的标签（我们认为元素（element）是起始标签和结束标签之间的内容）。所有其他的标签必须包含在这个标签之内来组成一个有效的XML文件。XML文件的第二行并不一定要包含文档元素；如果有注释或者其他内容，文档元素可以迟些出现。

范例文件中的第三行代码是注释，你会发现它与HTML中使用的注释风格是一样的。这是XML从SGML中继承的语法元素之一。

页面再往下的一些地方，可以发现<desc>标签裡有一些特殊的语法。<![CDATA[ ]]>代码用于表示无需进行解析的文本，允许诸如大于号和小于号之类的特殊字符包含在文本中，而无需担心破坏XML的语法。文本必须出现在<![CDATA[和]]>之间才能合适地避免被解析。这样的文本称为Character Data Section，简称CData Section。

下面的一行就是在第二本书的定义之前的：

<?page render multiple authors ?>

虽然它看上去很像XML序言，但实际上是一种称为处理指令（processing instruction）的不同类型的语法。处理指令（以下简称PI）的目的是为了给处理页面的程序（例如XML解析器）提供额外的信息。PI通常情况下是没有固定格式的，唯一的要求是紧随第一个问号必须至少有一个字母。在此之后，PI可以包含除了小于号和大于号之外的任何字符串序列。

最常见的PI是用来指定XML文件的样式表：

这个PI一般会直接放在XML序言之后，通常由Web浏览器使用，来将XML数据以特殊的样式显示出来。

XML的结构有一个缺陷，那就是不支持分帧（framing）。当多条XML消息在TCP上传输的时候，无法基于XML协议来确定一条XML消息是否已经结束。

## [编辑] 参见

- XHTML
- DTD（文件类型描述）
- XML Schema
- XLink
- SVG
- XSLT
- X3D
- HTML
- CSS
- RDF
- RSS
  - Unicode

## [编辑] 外部链接

- XML及SGML名词英汉翻译表 (台湾)

查 • 論 • 編 W3C规范和标准
推薦標準 | Canonical XML · CDF · CSS · DOM · HTML · MathML · OWL · P3P · PLS · RDF · RDF Schema · SISR · SMIL · SOAP · SRGS · SSML · SVG · SPARQL · Timed Text · VoiceXML · WSDL · XForms · XHTML · XLink · XML · XML Base · XML Encryption · XML Events · XML信息集 · XML命名空间 · XML Schema · XML Signature · XPath · XPointer · XQuery · XSL · XSL-FO · XSLT
Notes | XAdES · XHTML+SMIL
工作草案 | CCXML · CURIE · HTML 5 · InkML · WICD · XFDL · XFrames · XBL · XHTML+MathML+SVG · XMLHttpRequest · XProc
檢測 | 無障礙網頁檢測
前标准 | C-HTML · HDML · JSSS · PGML · VML

查 • 論 • 編 網頁技術與標準
文档呈现语言 | HTML*（HTML5*） · XHTML* · XML* · XForms* · DHTML*
样式格式描述语言 | CSS* · XSL*
动态网页技术 | CGI · ASP · ASP.NET · ColdFusion · JSP · PHP · Ruby on Rails
客户端交互技术 | ActiveX · Java Applet · JavaFX · AJAX（XMLHTTP*） · Silverlight · ActionScript（Flash · Flex · AIR）
客户端脚本语言 | JavaScript · JScript · VBScript · ECMAScript
标识定位语言 | URL · URI · XPath · URL重寫
文档纲要语言 | DTD* · XML Schema*

来自“http://zh.wikipedia.org/wiki/XML”
6个分类: 網頁技術 | W3C标准 | 文件格式 | 置标语言 | XML | 数据序列化格式
1个隐藏分类: 含有英語的條目

##### 个人工具

- 登录／创建账户

##### 帮助

- 帮助
- 社区入口
- 方针与指引
- 互助客栈
- 询问处
- 字词转换
- IRC即时聊天
- 联系我们
- 关于维基百科
- 资助维基百科

##### 工具

- 链入页面
- 链出更改
- 上传文件
- 特殊页面
- 打印页面
- 永久链接
- 引用此文

##### 其他语言

- Afrikaans
- العربية
- Žemaitėška
- Български
- বাংলা
- Bosanski
- Català
- Soranî / کوردی
- Česky
- Dansk
- Deutsch
- Ελληνικά
- English
- Esperanto
- Español
- Eesti
- Euskara
- فارسی
- Suomi
- Français
- Gaeilge
- Galego
- עברית
- हिन्दी
- Hrvatski
- Magyar
- Interlingua
- Bahasa Indonesia
- Íslenska
- Italiano
- 日本語
- 한국어
- ລາວ
- Lietuvių
- Latviešu
- മലയാളം
- Монгол
- Bahasa Melayu
- Nederlands
- ‪Norsk (nynorsk)‬
- ‪Norsk (bokmål)‬
- Polski
- Português
- Română
- Русский
- Simple English
- Slovenčina
- Slovenščina
- Shqip
- Српски / Srpski
- Svenska
- தமிழ்
- తెలుగు
- Тоҷикӣ
- ไทย
- Türkmençe
- Türkçe
- Українська
- اردو
- Tiếng Việt