XML的语法规则非常简单的逻辑。 规则很容易学习,而且易于使用。
XML文档必须有根元素
XML文档必须包含一个根元素,它是parent的所有其他元素:
<root>
<child>
<subchild>.....</subchild>
</child>
</root>
在这个例子中<注>是根元素:
<?xml version="1.0" encoding="UTF-8 " ?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
该XML序言
这条线被称为XML 序言 :
<?xml version="1.0" encoding="UTF-8 " ?>
该XML序言是可选的。 如果它存在,它必须是第一个在文档中。
XML文档可以包含国际字符,如挪威的OA或法语EE。
为了避免错误,应指定使用的编码,或XML文件保存为UTF-8。
UTF-8是XML文档的默认字符编码。
字符编码可以在我们进行研究的字符集教程 。
UTF-8也是HTML5,CSS,JavaScript的,PHP和SQL的默认编码。
所有的XML元素必须有一个结束标记
在HTML中,某些元素可能会工作得很好,即使缺少结束标记:
<p>This is a paragraph.
<br>
在XML中,它是非法的省略结束标记。 所有元素都must有结束标签:
<p>This is a paragraph.</p>
<br />
该XML序言没有关闭标签。
这不是错误。 序言不是XML文档的一部分。
XML标记区分大小写
XML标记区分大小写。 标签<Letter>是从标签不同的<letter> 。
开始和结束标记必须使用相同的情况下写的:
<Message>This is incorrect</message>
<message>This is correct</message>
“打开和关闭标签”往往被称为"Start and end tags" 。 使用任何你喜欢。 它是完全一样的东西。
XML元素必须正确嵌套
在HTML中,您可能会看到不正确嵌套的元素:
<b><i>This text is bold and italic</b></i>
在XML中,所有元素都must正确地相互嵌套:
<b><i>This text is bold and italic</i></b>
在上面的例子中, "Properly nested"只是意味着,自<i>元素被打开里面<b>元素,它必须在内部封闭<b>元素。
XML的属性值须加引号
XML元素可以在名称/值对的属性,就像在HTML。
在XML中,属性值须加引号。
错误:
<note date=12/11/2007>
<to>Tove</to>
<from>Jani</from>
</note>
正确:
<note date="12/11/2007">
<to>Tove</to>
<from>Jani</from>
</note>
第一个文档中的错误是date的说明元素属性没有加引号。
实体引用
一些字符在XML中的特殊含义。
如果将像一个字符"<" XML元素在里面,它会因为解析器解释为新元素的开始产生错误。
这将产生一个XML错误:
<message>salary < 1000</message>
为了避免这种错误,更换"<"与字符entity reference :
<message>salary < 1000</message>
有五个在XML文档预先定义的实体引用:
< | < | less than |
> | > | greater than |
& | & | ampersand |
' | ' | apostrophe |
" | " | quotation mark |
只有<和&是XML严格非法的,但它是一个好的习惯来代替>与&GT; 为好。
在XML注释
以XML写的评论的语法类似于HTML的。
<! - 这是注释 - >
在注释中间的两个破折号是不允许的。
不允许:
<!-- This is a -- comment -->
奇怪,但允许:
<!-- This is a - - comment -->
白色空间被保留的XML
XML不会截断多的空格(HTML截断多个白色空格一个单一的空格):
XML: | Hello Tove |
HTML: | Hello Tove |
XML存储新线作为LF
Windows应用程序存储新线:回车和换行符(CR+LF)
Unix和Mac OSX使用LF。
旧Mac系统使用CR。
XML存储新线LF。
良好的XML
符合上述的语法规则的XML文档说是"Well Formed"的XML文档。