全称:Extensible Markup Language:可扩展标记语言。是一种很像HTML的标记语言,标签没有被预定义,需要自行定义标签。
可扩展指的是:即使一份XML文档已经被读取,再向XML文档中添加新的元素,不会影响之前元素的读取。
XML设计用来传输和存储数据。应用于Web开发的许多方面,常用于简化数据的存储和共享。
XML树结构:
示例:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Dont forget me this weekend!</body>
</note>
第一行是xml声明,定义了XML的版本:1.0和所使用的编码:UTF-8。xml的声明可以不写。
接下来便是成对出现的标签。
XML的标签是大小写敏感的。
XML可以给标签自定义属性,如:<note date="10/06/2017">
XML中的一些字符拥有特殊的含义,不能再XML元素中直接使用,需要使用实体引用代替。XML有5个预定义的实体引用:
&it -- < ; > -- > ; & -- & ; &apos -- ' ; "e -- " ;
XML的注释与HTML写法相同。
XML的空格会保留。(HTML的空格多个合并为1个)
XML属性:
XML的元素具有属性,属性提供了有关元素的额外信息。这些信息与数据本身无关,但具有辅助作用。
属性值需要被引号包围,单双引号均可。
XML不建议过多使用属性。尽量用元素来描述数据,而属性用来提供和数据无关的信息。
XML DTD:
拥有正确语法的XML被称为形式良好的XML。通过DTD验证的XML是合法的XML。
DTD的目的是定义XML文档的结构。使用一系列合法的元素来定义文档的结构。
DTD可被成行的声明于XML文档,也能作为外部引用。
内部使用时,需要声明:
<!DOCTYPE root-element [element-declarations]>
示例:
<?xml version="1.0"?>
<!DOCTYPE note [ //定义文档为note类型(即根元素为note)
<!ELEMENT note (to,from,heading,body)> //定义note有4个元素:to,from,heading,body
<!ELEMENT to (#PCDATA)> //定义to元素为#PCDATA类型。PCDATA表示 被解析的字符数据(parsed character data)。些文本将被解析器检查实体以及标记
<!ELEMENT from (#PCDATA)> //文本中的标签会被当作标记来处理,实体引用会被展开。
<!ELEMENT heading (#PCDATA)> //还有一种#CDATA类型。CDATA表示 字符型数据(character data)。这些文本中的标签不会被当作标记来处理,而实体也不会被展开。
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>
外部引用时,需要声明:
<!DOCTYPE root-element System "filename">
如上面的例子,使用外部引用方式的写法:
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
DTD文件:note.dtd
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>