目录
XML简介
XML是什么:可扩展标记语言,用来传输和存储数据。
XML是一种很像HTML的标记语言,有标签这种东西,在标签内部放置不同的内容,但是不同于HTML的标签,比如<p>段落标签,<a>链接标签,<h>标题标签等,在XML里的标签可以自定义。
举个栗子:在HTML中 ,这样表示一个段落标签:
<p>这是一个标签</p>
在XML中,这样表示一个姓名标签,并且指明姓名是王五,至于标签是什么意思就由创作者自己定义了:
<name>王五</name>
XML用来做什么:XML用来存储、传输数据,并且在不同的设备、不同的系统中都可以使用。
比如写一个网页里面要放一些信息,当要对信息进行修改或者动态显示的时候,使用JS调用一个XML文件,里面放的就是要使用的信息,那么修改信息只需要在XML文件中进行即可,而不用修改大量的HTML代码。
XML语法
那么知道了XML是用来存储数据的,如何写一个XML文件呢?如何用XML文件保存想要传递的信息呢?
XML树结构
如题,XML首先有一个根,在这个根上扩展出很多枝枝蔓蔓,每个枝枝蔓蔓上都放有不同的东西,每个枝枝蔓蔓又可以有自己的枝枝蔓蔓,就像子类父类这样。
看一个例子:
<?xml version="1.0" encoding="utf-8"?> <note> <to>李华</to> <from>李明</from> <body>这个作文不会写</body> </note>
在上面的XML文件中,第一行是XML的声明定义使用的版本和编码,是必须的,基本都一样。之前说的一样,XMl里的标签都是可以自定义的,表达自己想要的意思,但是要有始有终,<***></***>这样。
第二行的<note>标签就是一个根,因为它的“终”在结尾</note>,别的标签<to><from><body>都在它的里面,属于它的子类,现在可以看出写一个子标签,就是放在一个标签里面,外面的是父类,里面的是子类。
这个XML文档表达的意思是:这是一个便条(note),李明(from)给李华(to)的,内容(body)是这个作文不会写。
其实表达这样的文案用word、txt、pdf等都可以,但是使用XML创建了标签,就可以使用代码利用标签对不同的内容进行调动,在下一篇的eXPath中会讲怎么使用。
语法规则
像之前写的XMl文档,XML的语法规则要求要有第一行的声明、标签要有始有终、必须要有根元素、标签前后大小写要一致等。
XML也可以对元素的属性进行设置,下面就是将<body>中内容语言属性(lang)设置为英文,属性要使用双引号" ":
<body lang="en">一段英文</body>
XML中还有一些特殊字符,在使用时要用实体引用代替,类似于C语言中的转义字符。
比如在XML文档中写 age<20,但是 < 会被识别为标签,这样原有意思就错了。
< < > > & & ' ' " "
注释:<!--***********-->
换行:LF
命名:同一般编程语言命名规则一样
XML验证
XML验证是什么:就是检查写的XML文档有没有错误。
通过DTD验证XML是一个合法的XML。
DTD是什么: DTD是文档类型定义,简单理解就是使用这个东西,就可以描述XML的自身格式,也可以通过这个验证自身的或者从外界接收的数据是否合适。
看下面这个XML代码:
<?xml version="1.0"?> <!-- Copyright w3school.com.cn --> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>George</to> <fromm>John</fromm> <heading>Reminder</heading> <body>Don't forget the meeting!</body> <ps>I love you</ps> </note>
红色的是原有的XML代码,包含根元素以及它的子元素,上面的蓝色和紫色代码就是DTD,它可以放在XML文档里面,就像上面这样也可以放在外部然后在XML中引用,比如在外部创建了一个名为note的DTD文档,在XML中引用:
<!DOCTYPE note SYSTEM "note.dtd">
DTD代表的意思:
!DOCTYPE note 表示是一个note类型的文档
<!ELEMENT note (to,from,heading,body) 表示note文档中含有四个元素
<!ELEMENT to (#PCDATA)> 定义to元素类型为#PCDATA
<!ELEMENT from (#PCDATA)> 定义from元素类型为#PCDATA
<!ELEMENT heading (#PCDATA)> 定义heading元素类型为#PCDATA
<!ELEMENT body (#PCDATA)> 定义body元素类型为#PCDATA这四个元素的顺序要和第二行note( )括号中写的一样。
这一块就是判断XML文档写的对不对,DTD的作用也是如此,怎么使用还不清楚,就了解个大概,后续再补吧~