各种标记语言
这篇文章最后更新的时间在六个月之前,文章所叙述的内容可能已经失效,请谨慎参考!
什么是标记语言
“标志(markup)”这个词来源自传统出版业的“标记”一个手稿, 也就是在原稿的边缘加注一些符号来指示打印上的要求。 长久以来,这个工作都是由专门的人("markup men")以及校对人来进行, 对原稿标志出使用什么样的字体,字体以及字号, 然后再将原稿交给其它人进行手工的排版工作。
根据维基百科对其的解释,“Markup language” 是用标准的标记来解释纯文本文档的内容,从而提供关于文档结构或文档该如何渲染的信息。
标志语言通常可以分为三类:表示性的、过程性的以及描述性的。
- 表示性的 (Presentational markup)
- 是在编码过程中,标记文档的结构信息。例如,在文本文件中,文件的标题可能需要用特定的格式表示(居中,放大等)
- 过程性的 (Procedural markup)
- 大多数情况下,过程性标志语言包含有一个图灵完备编程语言。
- 过程性标志语言的范例有:troff, TeX以及PostScript。过程性标志语言被广泛应用在专业出版领域,专业的出版商会根据要求使用不同的指标语言以达到出版要求。
- 描述性的 (Descriptive markup)
- 所描述的是文件的内容或结构,而不是文件的显示外观或样式,制定SGML的基本思想就是把文档的内容与样式分开,XML、SGML都是典型的通用标志语言。
标记语言的发展
- GML (Generalized Markup Language)
- SGML (Standard Generalized Markup Language)
- HTML (HyperText Markup Language)
- XML (Extensible Markup Language)
- XML 是一种使用非常广泛的元标记语言。 XML 是由 W3C 开发的,XML的主要目的是通过专注于特定问题(互联网上的文档)来简化SGML。XML仍然是一种像SGML这样的元语言,允许用户创建任何需要的标签(因此是“可扩展的”),然后描述这些标签及其允许的用途。
- XHTML (Extensible HyperText Markup Language)
- 表现方式与 HTML 类似,不过语法上更加严格。
- 从 2000 年到 HTML5 发布,所有 W3C 对 HTML 的建议都是基于 XML 的, XHTML 的语法更严谨和健壮,能避免许多语法错误,这些语法错误在历史上会导致不兼容的浏览器行为。
- HTML5
- W3C 的 XHTML 并没有获得业界的认可。
- Apple 、 Mozilla 和 Opera 等公司重新组织了一个名为 网页超文本应用技术工作小组(Web Hypertext Application Technology Working Group,WHATWG) 继续对 HTML 的开发,新的版本被命名为 HTML5 。
- 广义上的 HTML5 是包括 HTML CSS JS 以及 Web API 在内的一套技术组合, HTML5 最开始的愿景是减少浏览器对于需要插件的富网络应用服务的需求
XML 大致的发展关联
┌──────────────────────┐
│ │
│ ┌───────────┼─────────┐
│ │ │ │
│ │ ▼ ▼
GML ──────► SGML ────► HTML ─────► XML ────► HTML5
│ │ ▲
│ │ │
│ ▼ │
└───────► XHTML ──────┘
虽然现在提及标记语言,通常就是指 XML 和基于 XML 的其它标记语言。 但笔者认为像 JSON Yaml ini 这类基于文本的数据格式也可以归类到标记语言里。
一些常见标记语言的应用
XSL
XSL 指扩展样式表语言(EXtensible Stylesheet Language)。 CSS 是 HTML 样式表,那么 XSL 就是 XML 样式表。 W3C 开始发展 XSL 的原因是:存在着对于基于 XML 的样式表语言的需求。
XSL - 不仅仅是样式表语言, XSL 包括三部分:
- XSLT (XSL Transformations) - 一种用于转换 XML 文档的语言。
- XPath - 一种用于在 XML 文档中导航的语言。
- XSL-FO (XSL-Formatting Objects) - 一种用于格式化 XML 文档的语言。
Web services
Web services 平台的元素:
- SOAP (Simple Object Access Protocol, 简易对象访问协议)
- UDDI (Universal Description, Discovery, and Integration, 统一描述、发现和集成)
- WSDL (Web Services Description Language, Web 服务描述语言)
SOAP 是交换数据的一种协议规范, 使用在计算机网络Web服务(web service)中,交换带结构的信息。 SOAP为了简化网页服务器(Web Server)从XML数据库中提取数据时, 节省去格式化页面时间,以及不同应用程序之间按照HTTP通信协议, 遵从XML格式执行资料互换,使其抽象于语言实现、平台和硬件。
UDDI 是统一描述、发现和集成(Universal Description, Discovery, and Integration)的缩写。 UDDI 是一种目录服务,通过它,企业可注册并搜索 Web services。 它是一个基于 XML 的跨平台的描述规范,可以使世界范围内的企业在互联网上发布自己所提供的服务。
WSDL 描述Web服务的公共接口。 这是一个基于XML的关于如何与Web服务通讯和使用的服务描述; 也就是描述与目录中列出的Web服务进行交互时需要绑定的协议和信息格式。 通常采用抽象语言描述该服务支持的操作和信息,使用的时候再将实际的网络协议和信息格式绑定给该服务。
大多数语境下的 Web Services 平台是 XML + HTTP 。 HTTP 是可以替换成其它协议的。 Web Services 的关键是 XML 。 SOAP , UDDI , WSDL 等部分,本质上的区别是 XML 的格式和内容的区别。
RDF
资源描述框架(英语:Resource Description Framework,缩写:RDF), 是万维网联盟(W3C)提出的一组标记语言的技术规范,基于XML语法及XML Schema的资料类型以便更为丰富地描述和表达网络资源的内容与结构。
资源描述框架(RDF)是用于描述网络资源的 W3C 标准, 比如网页的标题、作者、修改日期、内容以及版权信息。
语义网
语义网(英语:Semantic Web)是由万维网联盟的蒂姆·伯纳斯-李(Tim Berners-Lee)在1998年提出的一个概念, 它的核心是:通过给万维网上的文档(如: HTML文档)添加能够被计算机所理解的语义(元数据), 从而使整个互联网成为一个通用的信息交换介质。 语义万维网通过使用标准、置标语言和相关的处理工具来扩展万维网的能力。 不过语意网概念实际上是基于很多已有技术的,也依赖于后来和text-and-markup与知识表现的综合。
基于 XML 的其它标记语言
- DTD
- Document Type Definition
- 文档类型定义(DTD)可定义合法的XML文档构建模块。
- 它使用一系列合法的元素来定义文档的结构。
- DTD 可被成行地声明于 XML 文档中
<!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]>
- 也可作为一个外部引用。
<!DOCTYPE note SYSTEM "note.dtd">
- HTML 开头的那句 <!DOCTYPE> 也可以算作是 DTD
- DTD 已经被 XSD 取代
- XSD
- XML Schema Definition
- XSD 是基于 XML 的 DTD 替代者。
- SVG
- 可缩放矢量图形(英语:Scalable Vector Graphics,缩写:SVG)是一种基于可扩展标记语言(XML),用于描述二维矢量图形的图形格式。SVG由W3C制定,是一个开放标准。
- MathML
- 数学标记语言(Mathematical Markup Language,MathML),是一种基于XML的标准,用来描述数学符号和公式。
- 它的目标是把数学公式集成到万维网和其他文档中。从2015年开始,MathML成为了HTML5的一部分和ISO标准。
- 只有 火狐 能直接支持 MathML 。
- Windows 7 自带工具名叫 Math Input Panel 。可以把手写输入转换为 MathML 。
- XLink
- XML链接语言,或XLink,是一种通过W3C推荐标准认证的XML标记语言,用于在 XML 文档中创建超链接,以及提供与这些链接相关联的元数据。
- OWL
- 网络本体语言(英语:Web Ontology Language,OWL)旨在提供一种可用于描述网络文档和应用之中所固有的那些类及其之间关系的语言。OWL网络本体语言当前已经获得万维网联盟认可的,用于编纂本体的知识表达语言家族。
- 还有很多 https://en.wikipedia.org/wiki/List_of_XML_markup_languages
各种文档格式
- 重量级的
- rtf
- html
- tex
- 轻量级的
- markdown
- common markdown
- GitHub Flavored Markdown (GFM)
- textile
- rts
- docbook
- AsciiDoc
- orgmode
- markdown
- 旧时代的
- man
- info
- 其他
- bbcode
- Wiki markup language