XML 语法规则
2008-03-21 14:51
134 查看
XML的语法规则非常简单,同时也是非常严格的;它易于学习,易于使用。
因此,开发能够识别和处理XML的软件也是非常容易的。
文档的第一行 —— XML声明 —— 定义XML的版本和文档所使用的字体编码,在这个案例当中,文档使用的是XML1.0规范,字体设置是ISO-8859-1 (Latin-1 / West European[西欧字体])
第二行描述了文档的根元素 (如同它所说的那样:"this document is a note"):
接下来的4行描述了根元素的4个子元素 (to、from、heading 和 body):
最后一行定义了根元素的结束标签:
你能从这个案例中发现这份XML文档包含了一个 Jani 发给 Tove 的信息吗? 难道你不赞同XML是非常具有自我描述性质的语言吗?
在HTML中,一些元素并不一定包含结束标签。下面的代码在HTML中是合法的:
在XML中,所有的元素都必须包含一个结束标签,如下所示:
注意:也许你在前面的案例中已经注意到,XML声明并没有包含结束标签。这并不是个错误。声明并不是XML文档本身的一部分,它也不是一个XML元素,所以它并不需要包含结束标签。
与HTML不同的是,XML标签是区分字母大小写的。
在XML中,标签<Letter>和<letter>是不同的。
因此,开始标签与结束标签必须一律用相同的大写字母或相同的小写字母书写:
不合理的标签嵌套对XML来说毫无意义。
在HTML中,某些元素相互之间可以不被合理欠套,就像下面这样:
在XML中,所有元素都必须像这样被合理的嵌套:
所有的XML文档必须包含一对单一的标签来定义一个根元素。
所有其它的元素必须包含在这个根元素中。
所有元素都可以有副元素(子元素)。副元素必须在它们的父元素里正确地嵌套:
XML中,省略属性值外面的引号是不正确的。
如同HTML一样,XML元素可以使用包含 “名称 / 值” 这样成对出现的属性值。在XML里,属性值必须写在引号里。看看下面这两个XML文档:第一个是错误的;第二个是正确的:
第一份文档的错误是note元素里的日期属性并未被写在引号里。
这样书写是正确的:date="12/11/2002";这样书写是错误的: date=12/11/2002。
在XML里,文档中的空格是不会被删除的。
这点和HTML不同。在HTML中,像下面这样的句子:
Hello my name is Tove,
will be displayed like this:
会被显示成这样:
Hello my name is Tove,
因为HTML会缩减空格倍数,连续的空格字符会被减少为一个空格符。
在XML中,新的一行会作为LF储存起来.
你知道什么是打字机吗?打字机是上世纪用于打印文件的机器装置。
在打字机上打完一行文本后,你得手动地把打印架推回左边的页面空白处,并且把纸调高一行。
在Windows应用软件中,新的一行通常被储存为一对字符:打印架推回(carriage return 简称CR),新行补给(line feed简称 LF)。设置字符对与打印机设置新行时的一系列动作有相似之处。在Unix应用软件中,新行通常被储存为”LF”字符,苹果机[Macintosh]应用软件只使用”CR” 字符来储存新行。
XML注释的写法和HTML类似
XML并没有什么特别之处,它只是普通文本,此外,还包含一些被关在对角型括号内的XML标签。
能处理普通文本的软件同样能处理XML文件。在一个简易的文本编辑器里,XML标签是可见的,而且不会被特殊处理。
然而,在能识别XML的应用软件里,XML标签是可以被特殊处理的。标签可以是可见的,也可以是不可见的;或者包含一种功能性的函义,这得取决于应用软件本身的特性。
<!-- This is a comment -->
因此,开发能够识别和处理XML的软件也是非常容易的。
XML文档案例
XML文档使用自述式语法,并且,语法规则非常简单。<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> |
第二行描述了文档的根元素 (如同它所说的那样:"this document is a note"):
<note> |
<to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> |
</note> |
所有的XML元素必须有一个结束标签
在XML中,省略结束标签是不正确的。在HTML中,一些元素并不一定包含结束标签。下面的代码在HTML中是合法的:
<p>This is a paragraph <p>This is another paragraph |
在XML中,所有的元素都必须包含一个结束标签,如下所示:
<p>This is a paragraph</p> <p>This is another paragraph</p> |
注意:也许你在前面的案例中已经注意到,XML声明并没有包含结束标签。这并不是个错误。声明并不是XML文档本身的一部分,它也不是一个XML元素,所以它并不需要包含结束标签。
与HTML不同的是,XML标签是区分字母大小写的。
在XML中,标签<Letter>和<letter>是不同的。
因此,开始标签与结束标签必须一律用相同的大写字母或相同的小写字母书写:
<Message>This is incorrect</message> <message>This is correct</message> |
不合理的标签嵌套对XML来说毫无意义。
在HTML中,某些元素相互之间可以不被合理欠套,就像下面这样:
<b><i>This text is bold and italic</b></i> |
在XML中,所有元素都必须像这样被合理的嵌套:
<b><i>This text is bold and italic</i></b> |
所有的XML文档必须包含一对单一的标签来定义一个根元素。
所有其它的元素必须包含在这个根元素中。
所有元素都可以有副元素(子元素)。副元素必须在它们的父元素里正确地嵌套:
<root> <child> <subchild>.....</subchild> </child> </root> |
XML中,省略属性值外面的引号是不正确的。
如同HTML一样,XML元素可以使用包含 “名称 / 值” 这样成对出现的属性值。在XML里,属性值必须写在引号里。看看下面这两个XML文档:第一个是错误的;第二个是正确的:
<?xml version="1.0" encoding="ISO-8859-1"?> <note date=12/11/2002> <to>Tove</to> <from>Jani</from> </note> |
<?xml version="1.0" encoding="ISO-8859-1"?> <note date="12/11/2002"> <to>Tove</to> <from>Jani</from> </note> |
第一份文档的错误是note元素里的日期属性并未被写在引号里。
这样书写是正确的:date="12/11/2002";这样书写是错误的: date=12/11/2002。
在XML里,文档中的空格是不会被删除的。
这点和HTML不同。在HTML中,像下面这样的句子:
Hello my name is Tove,
will be displayed like this:
会被显示成这样:
Hello my name is Tove,
因为HTML会缩减空格倍数,连续的空格字符会被减少为一个空格符。
在XML中,新的一行会作为LF储存起来.
你知道什么是打字机吗?打字机是上世纪用于打印文件的机器装置。
在打字机上打完一行文本后,你得手动地把打印架推回左边的页面空白处,并且把纸调高一行。
在Windows应用软件中,新的一行通常被储存为一对字符:打印架推回(carriage return 简称CR),新行补给(line feed简称 LF)。设置字符对与打印机设置新行时的一系列动作有相似之处。在Unix应用软件中,新行通常被储存为”LF”字符,苹果机[Macintosh]应用软件只使用”CR” 字符来储存新行。
XML注释的写法和HTML类似
XML并没有什么特别之处,它只是普通文本,此外,还包含一些被关在对角型括号内的XML标签。
能处理普通文本的软件同样能处理XML文件。在一个简易的文本编辑器里,XML标签是可见的,而且不会被特殊处理。
然而,在能识别XML的应用软件里,XML标签是可以被特殊处理的。标签可以是可见的,也可以是不可见的;或者包含一种功能性的函义,这得取决于应用软件本身的特性。
<!-- This is a comment -->