XML学习总结

314 阅读2分钟

**前言: 好记性不如烂笔头,对于零碎的知识最好可以记录和总结,方便以后查看。不然,总是从头学习,浪费时间。

一 XML是什么

XML(eXtensible Markup Language,可扩展的标记语言),主要用于保存数据。、

二、XML和HTML的异同点

相同点:都是标签; 不同点:xml无预定义标签,反之html有许多预定义标签 (注:html也可以自定义标签,点击查看如何定义);html用于显示信息,xml用于保存数据、传输数据等;

(了解内容)针对xml保存数据的作用,展开来说,有以下用途: (1)java程序的配置描述文件 (2)用于保存程序产生的数据 (3)用于网络间数据传输(例如soap协议,作用应该是类型http的报文)

三 XML文档结构

1. 第一行必须是XML声明

说明XML文档的基本信息,包含版本号和字符集,如下所示:

<?xml version=1.0 encoding="UTF-8?>

version属性说明了xml的版本是1.0(值还可以是1.1,区别点击这里查看) encoding属性说明了xml文档的编码。

2. 有且仅有一个根节点
3 标签书写规则同html

四、XML标签书写规则

  • 合法的标签名   使用英文单词,单词之间用连字符“-”,
  • 适当的注释和缩进
  • 合理使用属性
  • 特殊字符与CDATA标签   有些字符的使用,如“<”、“>”等,会破坏文档结构,需要使用实体引用;
实体引用对应符号
&lt;<
&gt;>
&amp;&
&apos;' 单引号
&quot;"双引号

如果有大量特殊字符,可以使用CDATA标签,表示标签中未纯文本数据,使用如下:

<![CDATA[
<h1> hello world</h1>
]]>
  • 有序的子元素

五、XML语义约束

语义约束定义了XML中标签的“语义”,即可以出现哪些标签、标签有哪些属性、标签可以定义的子标签有哪些及子标签的数量、标签的内容是子标签还时文本等等。可以这样理解,html是官方预定义标签,而xml通过语义约束自定义标签。使得xml是有效的。

语义约束有两种,DTD和Schama

1. DTD语义约束
DTD(Document Type Definition 文档类型定义) 是一种简单易用的语义约束方式。其文件扩展名是.dtd。
hr.dtd

<!ELEMENT hr (employee+)>   定义跟hr元素至少包含一个employee元素;
<!ELEMENT employee(name,age,salary,department)>
<!ATTLIST emplayee no CDATA">
<!ELEMENT name(#PCDATA)>

hr(empleyee) 包含一个employee元素 hr(employee+)包含一个或者多个,即至少一个 hr(employee*) 包含0个或者多个 hr(employee?)包含0个或者一个

XML文档中引用DTD文件的方式

本地文件,dtd位于本地 <DOCTYPE 根结点 SYSTEM "文件名,包含路径">

hr.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE hr SYSTEM "hr.dtd">
<!-- 人力资源管理系统-->
<hr>
    <employee>
        <name>Bob</name>
        <age>18</age>
        <salary>3000</salary>
        <department>
            <dname>dev</dname>
            <address>WuHan</address>
        </department>
    </employee>
</hr>

本地DTD约束,可以从声明看出dtd文件也属于xml

<?xml version="1.0" encoding="UTF-8" ?>
<!ELEMENT hr (employee*)>
<!ELEMENT employee (name, age, salary, department)>
<!ATTLIST employee no CDATA "000">
<!ELEMENT name (#PCDATA)>
<!ELEMENT  age (#PCDATA)>
<!ELEMENT salary (#PCDATA)>
<!ELEMENT  department (dname, address)>
<!ELEMENT dname  (#PCDATA)>
<!ELEMENT  address (#PCDATA)>
2. Schema约束 (美 /ˈskiːmə/)
W3C规范**