示例代码

首先给出示例代码

<!-- filename  test.xml-->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book SYSTEM "book.dtd">
<booklist>
	<top>
		<bookname>《悲惨世界》</bookname>
		<bookauthor>雨果</bookauthor>
	</top>
	<top>
		<bookname>《人间失格》</bookname>
		<bookauthor>太宰治</bookauthor>
	</top>
</booklist>
<!--filename  book.dtd -->
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT book(booklist,top*,bookname+,bookauthor+)>
<!ELEMENT booklist (#ANY)>
<!ELEMENT top (#ANY)>
<!ELEMENT bookname (#PCDATA)>
<!ELEMENT bookauthor (#PCDATA)>

关于声明语句部分

在上述代码中,<?xml version="1.0" encoding="UTF-8"?>是XML的一个声明,表示文档遵循的是XML1.0规范。

  • 一个有效的XML文件第一行必须进行声明。

  • 完整的声明格式如下:<?xml version="1.0" standalone="yes/no" encoding="UTF-8"?>

  • 其中 standalone="yes/no" 定义了是否可以在不读取其他文件的情况下处理该文档。例如,standalone="yes"表示XML没有与其他任何文件关联。不写表示默认,即standalone="no"

  • 其中encoding="UTF-8"是文档的编码方式。其他编码方式:简体中文:encoding="GB2312,繁体中文:BIG5

<DOCTYPE book SYSTEM "book.dtd">属于文件的序言部分。说明此文档使用的是这个文件来定义文档类型的。浏览器默认使用Unicode编码来解析,所以上述声明在当下情况也可以简单写成<?xml version="1.0">

在上述代码中,<booklist><top><bookname>等这些tags是用户自定义的。其中<booklist>是根元素。其他元素为子元素,其中最内层的是叶子元素。(XML是基于树形结构的,所有的元素构成了一个简单的层次树,所以元素与元素之间唯一的直接关系就是父子关系)。

关于文档内容部分

  • 关于元素命名:XML基本没有什么保留字,我们几乎可以用任何词语来为元素名命,但是需要注意以下几点:不能用数字或者标点符号开头,不能以XML、xml、Xml…开头,名字中不能有空格,避免使用“-”、“.”这些符号,尽量与数据库中的元素名称保持一致。
  • XML中元素类型:空元素、仅含文本元素、含其他元素、混合元素。
    例如:空元素:<book></book><book/>
    仅含文本元素:<book>《悲惨世界》<book>
    包含其他元素:<top><book>《悲惨世界》<book><top>,其中top是父级元素,book是子元素。
    混合元素:<top>畅销榜单<book>《悲惨世界》<book><top>,既包含文本元素也包含子元素。

XML的属性部分

  • 属性可以提供元素的额外信息,是对标识的进一步描述和说明。
  • 每个属性有自己的名称和数值,属性是标识的一部分。例如:<author sex="man">雨果</author>.
  • 一个元素可以有多个属性。
  • 当元素包含属性时,一般称之为复合类型元素。
  • 在XML应尽量避免使用属性,使用属性会引发如下许多问题:属性不可以包含多个值、而子元素可以,属性不容易扩展,属性不能够描述结构、而子元素可以,属性很难被程序代码处理,属性很难通过DTD进行测试。

其他需要注意的地方

  • 注释的写法<!-- 在这里写注释信息--->
  • 注意大小写。在XML中,<Book>,<BOOK>,<book>这是三种不同的标识。
  • 所有的XML文件有且只有一个根元素。在上面test.xml文件中,根元素为<booklist>.
  • 属性值必须加上引号。例如<font color="red">,不能写成<font color=red>
  • 空标识符必须被关闭。有两种写法
    第一种:<title/>(以/>结尾)。
    第二种:<title></title>
    但是不可以写成<title>,(这个没有结束标识)。
  • 处理空白字符的方式
    对于XML来说,解析器会忠实的交给应用程序来理解。所以解析器会保留内容中所有的空白字符并不加修改的传递给应用程序,但元素标记和属性值中的空白会被删除。所以:
<author>雨果</author>

<author>
	雨果
</author>

会不同的执行结果。

  • 处理特殊字符的方式
    因为特殊字符已被XML文件使用,所以想要显示特殊字符需要被相应的符号来替代。
特殊字符 替换字符
< &lt
> &gt
and(&) &amp
双引号(") &quot
单引号(’) &apos
  • 关于名命空间
    通过使用前缀,可以解决名命冲突问题。
    代码示例:
<fruit:table>
	<fruit:tr>apple<fruit:tr>
<fruit:table>
<furniture:table>
	<furniture:tr>HongMu<furniture:tr>
<furniture:table>

浏览器查看代码

可以将代码直接拖入浏览器中,或者在浏览器的地址栏中输入本地文件的位置信息,即可显示。
文首的test.xml文件在chrome浏览器中的显示效果如图:
XML基本语法介绍_程序人生
点击左侧的三角符号可以将代码进行折叠隐藏。

XML文档结构

XML基本语法介绍_基础语法_02