XML.可扩展标记语言.就知道你不知道英文全称

  • eXtensible Markup Language , 可扩展标记语言,简称XML
  • 读作“叉按木爱要”
  • 很多这种小语种都隶属于W3C,其也有一个很全的教学网站

http://www.w3school.com.cn/


发展史

  • XML实际上是标记语言(Markup Language)的一种,其由来、发展也就是标记语言的发展历程。
SGML
  • Standard Generalized Markup language (SGML; ISO 8879:1986)
  • 标准通用标记语言
  • 是IBM自1960年代就在发展的GML标准化后的名称。

The Standard Generalized Markup Language (SGML), an ISO-standard technology for defining generalized markup languages for documents, is descended from GML.——Wikipedia

  • GML的命名也是相当巧妙

GML was developed in 1969 and the early 1970s by Charles Goldfarb, Edward Mosher and Raymond Lorie (whose surname initials were used by Goldfarb to make up the term GML).——Wikipedia

  • GML增强了数据交换,文档均使用 通用的文档格式 ,即文档的组织结构、内容及其之间的关系等等,被一些通用的描述标记章节、段落、列表等等所规范,是文档处理起来变得更通用更简单。

Using GML, a document is marked up with tags that define what the text is, in terms of paragraphs, headers, lists, tables, and so forth. The document can then be automatically formatted for various devices simply by specifying a profile for the device. For example, it is possible to format a document for a laser printer or a line (dot matrix) printer or for a screen simply by specifying a profile for the device without changing the document itself.

  • SGML则发展了GML,作为一种通用的文档结构描述符号化语言,主要有三部分组成
    • 语法定义:定义了文件类型和文件示例的语法结构
    • 文件类型定义:定义了文件实例的结构和组成文件实例的元素类型
    • 文件实例:就是文档主体
  • 这种分部定义文档的方法带来了极强的扩展性和兼容性,其独立于平台和应用,且十分严谨
  • 但同时也使得SGML过于庞大和复杂(标准手册500+页),所以真正能大行其道的反而是SGML的一些子集。比如HTML和XML。

Generalized markup is based on two postulates:
1. Markup should be declarative: it should describe a document’s structure and other attributes, rather than specify the processing to be performed on it. Declarative markup is less likely to conflict with unforeseen future processing needs and techniques.
2. Markup should be rigorous so that the techniques available for processing rigorously-defined objects like programs and databases can be used for processing documents as well.
——Wikipedia

HTML

History

  • In 1980, physicist Tim Berners-Lee, then a contractor at CERN, proposed and prototyped ENQUIRE, a system for CERN researchers to use and share documents.
    • ENQUIRE was a software project written in 1980 by Tim Berners-Lee at CERN,[2] which was the predecessor to the World Wide Web.
  • In 1989, Berners-Lee wrote a memo proposing an Internet-based hypertext system.
  • Berners-Lee specified HTML and wrote the browser and server software in late 1990.
  • The first publicly available description of HTML was a document called “HTML Tags”, first mentioned on the Internet by Tim Berners-Lee in late 1991.
    ——Wikipedia
  • HTML确实是以SGML为基础,是一种实际的应用。意思就是,HTML的DTD是固定的。
    • DTD固定是什么意思?意思就是我们熟知的html标签
      • < p > < /p>
      • < head > < /head>
      • < title > < /title >
      • ……
    • 都有着固定的含义。被浏览器解释的时候也是按照固定的含义来解释。这些含义就是由DTD来规定下来的。
  • 这样的同时,也使得html变得十分易学,而且其在网页上的表现也很好,十分通用,所以html发展很快
  • 不过

HTML was theoretically an example of an SGML-based language until HTML 5, which admits that browsers cannot parse it as SGML (for compatibility reasons) and codifies exactly what they must do instead.
——Wikipedia

  • HTML 5大概是整合了太多新的东西,已经独立于SGML体系了吧
  • 终归 HTML系列 聚焦的是数据的显示,即浏览器等终端根据规则来可视化、可听化地显示HTML包含的信息
  • 正如HTML的定义

HyperText Markup Language, commonly abbreviated as HTML, is the standard markup language used to create web pages. Along with CSS, and JavaScript, HTML is a cornerstone technology used to create web pages,[1] as well as to create user interfaces for mobile and web applications. Web browsers can read HTML files and render them into visible or audible web pages. HTML describes the structure of a website semantically and, before the advent of Cascading Style Sheets (CSS), included cues for the presentation or appearance of the document (web page), making it a markup language, rather than a programming language.
——Wikipedia

XML
  • XML倒没有HTML这种英雄式的起源,而是W3C专门设定的一套规则严谨、语法简单的信息描述语言,通常认为XML是SGML的一个子集,着重于表示数据以及数据之间的联系,针对的是数据内容

Extensible Markup Language (XML) is a markup language that defines a set of rules for encoding documents in a format that is both human-readable and machine-readable.
The design goals of XML emphasize simplicity, generality and usability across the Internet.
——Wikipedia

  • XML被广泛的用来作为跨平台之间交换数据的形式
  • 不过XML没有像HTML那样限制,所以也需要很多配套的技术(DTD,XMLSchema、XPath、XQuery、XSLT等等)来完成整个对信息的描述、存储和转化等的过程
  • 通过不同的格式化手段(XSLT,CSS)可以完成最终的形式表达(生成HTML,PDF或其他形式的文件格式)。

XML特点

  • 可扩展性:XML的标记是任意指定的,而不像HTML那样是固定的标记,这使得XML可以对更多种的数据进行描述
  • 灵活性:XML提供一种结构化的数据表示方式,与其样式表示分离开,注重于数据的内容。
  • 自描述性:读一个XML很容易,其开头通常包括的一个文档类型的说明,使得机器阅读XML也十分容易
  • 间接性:通常认为XML以相当于SGML约20%的复杂度完成了80%的SGML的功能。SGML在对文档的描述上固然要比XML更为强大,但这种强大的代价是更让人头疼的复杂度。而XML大大降低了复杂度,却仍具有足够强大的功能。

语法简介

声明
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
  • 声明部分是可选的
  • 但如果要有声明,则必须放在第一行,且 “<?xml”必须顶格
  • 完整的 XML 声明包括三个部分
    • 版本声明(version):必有
    • 编码声明(encoding):是指明当前XML文档中使用的符号的编码方式,与XML文件保存是文件系统采用的编码方式是不同的。比如XML有中文要显示,那么解析的时候如果没有声明兼容中文的编码方式,是无法解析的,只有声明了gb2312等适合中文的编码方式,解析器才能正确解析XML中的中文。保存则是另一回事。本声明可选,如果有必须在版本声明后面;没有的话,默认值是UTF-8
    • 文档独立性声明(standalone):即当前XML是独立使用,还是其内部的内容依赖于其他的外部文件。yes表示独立。本声明可选。
处理指令与注释
<?target-name data?> 
  • 处理指令:当XML用于某种特殊的应用程序的时候,所需要执行的特殊的操作。XML解析器本身是不去理会这些操作的。
  • 比如:
<?xml-stylesheet href=“style.xsl” type=“text/xsl”?>
  • 当 XSL 的执行引擎碰到这个处理指令时,将会根据 href 的取值获得指定的 xsl 文件,并对输入的 XML 文档进行相应的转换
<!-- 注释内容  -->
  • 注释内容不能包含两个连续的“-”,因为这是标记注释的一个特殊符号
元素和属性
<element_name att1="val1" att2="val2">     ――开始标记
...content...                              ――内容
</element_name>                            ――结束标记 
  • 元素的命名
    • 开头:字母、下划线或冒号
    • 其余:字母、数字、横线、下划线、点号、冒号
    • 大小写敏感
    • 长度没有限制
    • 由于unicode的支持,所以可以使用非英文的元素名
  • 空元素
    • 内容部分为空的元素,可以包含属性
  • 其他
    • 属性是无序的,不重名
    • 子元素是有序的,可以重名
    • 也是为了区分嘛
预定义实体
符号实体
<&lt;
>&gt;
&&amp;
'&apos;
"&quot;
纯文本字段
<![CDATA[这里面写什么文本都可以]]>
空白字符
  • 空格
  • 回车
  • 换行
  • 制表
良构性规则
  • 开始标记与结束标记对应
  • 标记大小写敏感
  • 标记正确嵌套
  • 属性值必须用引号包围
  • 有且只有一个根元素
XML示例
<?xml version="1.0" encoding="UTF-8"?>
<book year="1994">
    <title>TCP/IP Illustrated</title>
    <author>
        <last>Stevens</last>
       <first>W.</first>
    </author>
    <publisher>Addison-Wesley</publisher>
    <price> 65.95</price>
</book> 
命名空间
  • 命名空间是一个好想法,但是,在XML上,太tm难用了,,,,,,

  • 声明

xmlns:prefix-name="URI" 
  • 示例1
<?xml version="1.0" encoding="UTF-8"?>
<ns:company xmlns:ns="http://www.myns.com">
    <ns:company-info>
        <ns:name>SoftwareBG</ns:name>
        <ns:fdate>2007-03-17</ns:fdate>
        <ns1:division xmlns:ns1="http://www.myns.com/division">
            <ns1:name>Development</ns1:name>
            <ns1:employees>100</ns1:employees>
        </ns1:division>
    </ns:company-info>
</ns:company> 
  • 示例2
<?xml version="1.0" encoding="UTF-8"?>
<company xmlns="http://www.myns.com">
    <company-info>
        <name>SoftwareBG</name>
         <fdate>2007-03-17</fdate>
         <ns1:division xmlns:ns1="http://www.myns.com/division">
             <ns1:name>Development</ns1:name>
             <ns1:employees>100</ns1:employees>
         </ns1:division>
    </company-info>
</company> 
  • 命名空间作为一种作用域的限制,同一命名空间中的元素名、属性名必须唯一,而不同命名空间则可以相同,通过命名空间可以区分
  • 比如name是一个很常用的元素名,嵌套关系中很可能会多次出现,那么采用命名空间的约束就可以摆脱烦恼~
  • 不过带来了新的烦恼,,,命名空间确实比较烦,,,尤其在引用外部XML的时候,,,当初一道题死活搞不定一怒之下去掉了命名空间哈哈哈
  • 后来发现一个例子里的命名空间是“WE_LOVE_XML_BUT_HATE_NAMESPACE”
  • 戳中萌点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值