【XML学习 一】XML基础

简介: 【XML学习 一】XML基础

最近接了个活要解构XML和JSON,武哥说让了解下XML Schema,所以兴致勃勃的打开了W3C来学习一下,结果勒:

好吧,因为之前只是用了一下XML,知道大概结构,依据一贯的学习风格:知其然,知其所以然。所以决定成体系的速成一下,HTML和XHTML并不是关注的重点,所以这里只是简单介绍一下,如果以后有这方面学习的需求,再多看看。

1,什么是HTML语言

HTML 是用来描述网页的一种语言。HTML 指的是超文本标记语言 (Hyper Text Markup Language),HTML 不是一种编程语言,而是一种标记语言 (markup language),标记语言是一套标记标签 (markup tag),HTML 使用标记标签来描述网页

2,什么是XHTML语言

XML 用来描述数据,而 HTML 则用来显示数据。而XHTML结合了两者的优点。XHTML 指可扩展超文本标签语言(EXtensible HyperText Markup Language)。XHTML 是更严格更纯净的 HTML 版本。XHTML 是作为一种 XML 应用被重新定义的 HTML。XHTML 是一个 W3C 标准。

3 ,HTML和XHTML区别

二者的区别实际上主要只有以下四点,在我看来,就是结合XML的严格规范来对HTML进行了一下约束而已,本质没有不同。

  • XHTML 元素必须被正确地嵌套。
  • XHTML 元素必须被关闭。
  • 标签名必须用小写字母。
  • XHTML 文档必须拥有根元素。

在基本了解了HTML和XHTML之后,这一篇重点用来理解XML的前世今生。为了在下周一迅速投入Schema讨论,所以这里了解基本概念即可,高级部分内容其实也挺有意思,可以在后续完善本篇博客。

XML基本概念

主要谈了谈XML的定义原理blabla,以及和HTML的对比

什么是XML

XML 指可扩展标记语言(EXtensible Markup Language),XML 是一种标记语言,很类似 HTML。在W3C的描述里可以看到XML定义有以下三个特点:

  • XML 的设计宗旨是传输数据,而非显示数据。
  • XML 标签没有被预定义。需要自行定义标签。
  • XML 被设计为具有自我描述性

对于这三个特点我觉得可以这么理解,例如读取远程配置,远程配置文件通常就是用XML写的,在远程配置里我们可以自己定义一些节点,这些节点可以自我描述,节点里又存储了我们需要的信息,而XML仅仅是一种纯文本的格式,所以必须依赖应用程序做特定处理,例如我写一个配置类来读取配置文件。

XML和HTML的区别

二者都是标记语言,但有本质区别,因为XML 和 HTML 为不同的目的而设计:

  • XML 被设计为传输和存储数据,其焦点是数据的内容
  • HTML 被设计用来显示数据,其焦点是数据的外观
  • HTML 旨在显示信息,而 XML 旨在传输信息

还有一个比较重要的就是,HTML 文档只使用在 HTML 标准中定义过的标签,而XML只能自定义标签,它是不作为的。

基本结构

主要讲了XML的组成部分,树形结构,语法规则,XSTL样式化XML,XML的结构验证

组成部分

XML主要由两部分组成:元素和属性。元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素。假设我现在有一堆数据,这些数据通过XML结构化存储起来,有些我想给A用,有些我想给B用,这个时候就可以把用途标记为属性,程序读取属性后将数据分配给对应的人。

元素

XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性

XML 元素必须遵循以下命名规则

  • 名称可以含字母、数字以及其他的字符
  • 名称不能以数字或者标点符号开始
  • 名称不能以字符 “xml”(或者 XML、Xml)开始
  • 名称不能包含空格

最重要的 一点,没有任何关键字的禁忌,这点非常爽,更爽的是,元素可以动态扩展,在不中断程序的情况下随意扩展!

属性

属性 (Attribute) 提供关于元素的额外(附加)信息。属性通常提供不属于数据组成部分的信息。但对如何处理该元素有很大的用处。尽量使用元素来描述数据,而仅仅使用属性来提供与数据无关的信息。因为属性不像元素那样方便扩展和描述树结构.

属性值必须被引号包围,不过单引号和双引号均可使用

树形结构

XML 文档必须包含根元素。该元素是所有其他元素的父元素。同时根元素可以有子元素,每个元素节点可以有属性

该图显示了一个书店根元素书子元素书的类别属性书的标题子元素的语言属性

语法规则

XML的四条语法规则同XHTML对HTML的强规范类似:

  1. 所有 XML 元素都须有关闭标签———对应于XHTML必须被正确关闭
  2. XML 标签对大小写敏感———对应于XHTML标签必须使用小写
  3. XML 必须正确地嵌套———对应于XHTML必须被正确地嵌套
  4. XML 文档必须有根元素———对应于XHTML 文档必须拥有根元素
  5. XML 的属性值须加引号
  6. 为防止“<”符号而进行的实体引用,实际上类似于我们常常提到的转义元素内容遇到想要的中间栏符号,用左边栏对应的代替
  7. 注释语法:<!-- This is a comment -->
  8. 在 XML 中,空格会被保留,也就是不用再打一堆变态的&nbsp了,文档有几个就打几个空格
  9. XML 以 LF 存储换行

使用XSTL样式化 XML

就像CSS可以给html提供样式一样,XSL也可以给XML提供样式。

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="simple.xsl"?> //通过简单的引入,就可以将XSL的样式应用到XML中
<breakfast_menu>
  <food>
    <name>Belgian Waffles</name>
    <price>$5.95</price>
    <description>
       two of our famous Belgian Waffles
    </description>
    <calories>650</calories>
  </food>
</breakfast_menu>

验证XML文档结构

这里第一次清楚了DTD和Schema到底是什么,其实说白了就是XML结构的元数据,就是文档结构的定义,各个元素和属性的描述。

使用DTD

DTD 的作用是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构:

<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>

使用Schema

W3C 支持一种基于 XML 的 DTD 代替者,它名为 XML Schema:

<xs:element name="note">
<xs:complexType>
  <xs:sequence>
    <xs:element name="to"      type="xs:string"/>
    <xs:element name="from"    type="xs:string"/>
    <xs:element name="heading" type="xs:string"/>
    <xs:element name="body"    type="xs:string"/>
  </xs:sequence>
</xs:complexType>
</xs:element>


相关文章
|
7月前
|
XML SQL 数据处理
学习 XQuery:XML数据查询的关键
XQuery是用于查询XML数据的语言,类似SQL对数据库的操作。它基于XPath构建,用于从XML文档中提取和排序元素。FLWOR表达式(For, Let, Where, Order by, Return)是其核心,用于处理和过滤数据。例如,示例代码展示了如何选取&quot;books.xml&quot;中价格大于30的书籍并按标题排序。XQuery还可用于Web服务、生成报告、XML到XHTML转换及搜索文档等场景。了解XPath能帮助更好地掌握XQuery,两者有相似的数据模型和函数。
120 0
|
7月前
|
XML 存储 JSON
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
102 0
|
XML 存储 JSON
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
112 0
|
7月前
|
XML Java Maven
第1次Spring源码学习之@Bean、@Configuration、xml、分析
第1次Spring源码学习之@Bean、@Configuration、xml、分析
73 0
|
3月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
51 1
|
1月前
|
XML 前端开发 Java
XML基本概念入门学习指南
XML(eXtensible Markup Language)是一种可扩展的标记语言,和HTML语言语法类似,同属于标记语言。
78 14
|
6月前
|
XML Java 数据格式
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
51 1
|
2月前
|
XML Java 应用服务中间件
tomcat学习一:tomcat 目录及配置文件学习 server.xml 等
这篇文章是关于Apache Tomcat服务器的目录结构、配置文件(特别是server.xml)的详细介绍和学习指南。
110 0
tomcat学习一:tomcat 目录及配置文件学习 server.xml 等
|
7月前
|
XML 存储 JavaScript
深入学习 XML 解析器及 DOM 操作技术
所有主要的浏览器都内置了一个XML解析器,用于访问和操作XML XML 解析器 在访问XML文档之前,必须将其加载到XML DOM对象中 所有现代浏览器都有一个内置的XML解析器,可以将文本转换为XML DOM对象
133 0
|
XML 存储 数据库
XML学习基础知识归纳(一)
XML是可扩展的标记语言,xml文档的后缀名为 .xml
78 1