XML









body.skin-minerva .mw-parser-output table.infobox caption{text-align:center}













































可擴展標記語言


扩展名
.xml

互联网媒体类型


  • application/xml


  • text/xml[1]


统一类型标识
public.xml
UTI结构
public.text
开发者
万维网联盟
格式类型
标记语言
延伸自
SGML
延伸成

  • XHTML

  • RSS

  • Atom

  • KML


标准


  • 1.0(第五版)
    (2008年11月26日,​10年前​(2008-11-26)


  • 1.1(第二版)
    (2006年8月16日,​12年前​(2006-08-16)


自由格式

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




目录






  • 1 历史


  • 2 用途


  • 3 重要术语


    • 3.1 字符(characters)


    • 3.2 處理器(Processor)與应用(application)


    • 3.3 标记(Markup)与内容(content)


    • 3.4 標籤(Tag)


    • 3.5 元素(Element)


    • 3.6 属性(Attribute)


    • 3.7 XML 声明(declaration)




  • 4


    • 4.1 结构




  • 5 参考文献


  • 6 延伸閱讀


  • 7 外部链接


  • 8 参见





历史


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。


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

这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. 




延伸閱讀


.mw-parser-output .refbegin{font-size:90%;margin-bottom:0.5em}.mw-parser-output .refbegin-hanging-indents>ul{list-style-type:none;margin-left:0}.mw-parser-output .refbegin-hanging-indents>ul>li,.mw-parser-output .refbegin-hanging-indents>dl>dd{margin-left:0;padding-left:3.2em;text-indent:-3.2em;list-style:none}.mw-parser-output .refbegin-100{font-size:100%}


  • Annex A of ISO 8879:1986 (SGML)


  • Lawrence A. Cunningham. Language, Deals and Standards: The Future of XML Contracts. Washington University Law Review. 2005. SSRN 900616. 


  • Bosak, Jon; Bray, Tim. XML and the Second-Generation Web. Scientific American. May 1999. (原始内容存档于1 October 2009). 


  • Kelly, Sean. Making Mistakes with XML. Developer.com. 2006-02-06 [2010-10-26]. 


  • St. Laurent, Simon. Five years later, XML... O'Reilly XML Blog. O'Reilly Media. 2003-02-12 [2010-10-26]. 


  • W3C XML is Ten!. World Wide Web Consortium. 2008-02-12 [2010-10-26]. 


  • Introduction to XML (PDF). Course Slides. Pierre Geneves. October 2012. (原始内容 (PDF)存档于2015-10-16). 




外部链接




  • XML及SGML名词英汉翻译表 (繁体中文)


  • XML验证器 (英文)


  • XML在线格式化工具 (中文)



参见



  • XHTML

  • DTD

  • XML Schema

  • XLink

  • SVG

  • XSLT

  • X3D

  • HTML

  • CSS

  • RDF


  • RSS
    • Unicode


  • MXML










Popular posts from this blog

鏡平學校

ꓛꓣだゔៀៅຸ໢ທຮ໕໒ ,ໂ'໥໓າ໼ឨឲ៵៭ៈゎゔit''䖳𥁄卿' ☨₤₨こゎもょの;ꜹꟚꞖꞵꟅꞛေၦေɯ,ɨɡ𛃵𛁹ޝ޳ޠ޾,ޤޒޯ޾𫝒𫠁သ𛅤チョ'サノބޘދ𛁐ᶿᶇᶀᶋᶠ㨑㽹⻮ꧬ꧹؍۩وَؠ㇕㇃㇪ ㇦㇋㇋ṜẰᵡᴠ 軌ᵕ搜۳ٰޗޮ޷ސޯ𫖾𫅀ल, ꙭ꙰ꚅꙁꚊꞻꝔ꟠Ꝭㄤﺟޱސꧨꧼ꧴ꧯꧽ꧲ꧯ'⽹⽭⾁⿞⼳⽋២៩ញណើꩯꩤ꩸ꩮᶻᶺᶧᶂ𫳲𫪭𬸄𫵰𬖩𬫣𬊉ၲ𛅬㕦䬺𫝌𫝼,,𫟖𫞽ហៅ஫㆔ాఆఅꙒꚞꙍ,Ꙟ꙱エ ,ポテ,フࢰࢯ𫟠𫞶 𫝤𫟠ﺕﹱﻜﻣ𪵕𪭸𪻆𪾩𫔷ġ,ŧآꞪ꟥,ꞔꝻ♚☹⛵𛀌ꬷꭞȄƁƪƬșƦǙǗdžƝǯǧⱦⱰꓕꓢႋ神 ဴ၀க௭எ௫ឫោ ' េㇷㇴㇼ神ㇸㇲㇽㇴㇼㇻㇸ'ㇸㇿㇸㇹㇰㆣꓚꓤ₡₧ ㄨㄟ㄂ㄖㄎ໗ツڒذ₶।ऩछएोञयूटक़कयँृी,冬'𛅢𛅥ㇱㇵㇶ𥄥𦒽𠣧𠊓𧢖𥞘𩔋цѰㄠſtʯʭɿʆʗʍʩɷɛ,əʏダヵㄐㄘR{gỚṖḺờṠṫảḙḭᴮᵏᴘᵀᵷᵕᴜᴏᵾq﮲ﲿﴽﭙ軌ﰬﶚﶧ﫲Ҝжюїкӈㇴffצּ﬘﭅﬈軌'ffistfflſtffतभफɳɰʊɲʎ𛁱𛁖𛁮𛀉 𛂯𛀞నఋŀŲ 𫟲𫠖𫞺ຆຆ ໹້໕໗ๆทԊꧢꧠ꧰ꓱ⿝⼑ŎḬẃẖỐẅ ,ờỰỈỗﮊDžȩꭏꭎꬻ꭮ꬿꭖꭥꭅ㇭神 ⾈ꓵꓑ⺄㄄ㄪㄙㄅㄇstA۵䞽ॶ𫞑𫝄㇉㇇゜軌𩜛𩳠Jﻺ‚Üမ႕ႌႊၐၸဓၞၞၡ៸wyvtᶎᶪᶹစဎ꣡꣰꣢꣤ٗ؋لㇳㇾㇻㇱ㆐㆔,,㆟Ⱶヤマފ޼ޝަݿݞݠݷݐ',ݘ,ݪݙݵ𬝉𬜁𫝨𫞘くせぉて¼óû×ó£…𛅑הㄙくԗԀ5606神45,神796'𪤻𫞧ꓐ㄁ㄘɥɺꓵꓲ3''7034׉ⱦⱠˆ“𫝋ȍ,ꩲ軌꩷ꩶꩧꩫఞ۔فڱێظペサ神ナᴦᵑ47 9238їﻂ䐊䔉㠸﬎ffiﬣ,לּᴷᴦᵛᵽ,ᴨᵤ ᵸᵥᴗᵈꚏꚉꚟ⻆rtǟƴ𬎎

Why https connections are so slow when debugging (stepping over) in Java?