XML
# XML 简介
XML 被设计用来传输和存储数据,而不是显示数据。
HTML 被设计用来显示数据。
XML 标签没有被预定义,需要用户自行定义标签。
XML 被设计为具有自我描述性。
XML 不是 HTML 的替代。它们的设计目的不同。
# XML 标签
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
上面实例中的标签没有在任何 XML 标准中定义过(比如和)。这些标签是由 XML 文档的创作者发明的。这是因为 XML 语言没有预定义标签。
HTML 中使用的标签都是预定义的。
# XML 树结构
<?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 的版本(1.0)和所使用的编码(UTF-8)。
下一行描述文档的根元素(像是在说:“文本是一个便签”):
<note>
接下来 4 行描述根的 4 个子元素(to, from, heading 以及 body):
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
最后一行定义根元素的结尾:
</note>
# XML 语法
根元素必须要有,它是所有其他元素的父元素。
声明是可选的,如果有需要放在文档的第一行。
关闭标签每个元素都要有,省略关闭标签是非法的。
大小写敏感。
必须正确嵌套。
属性值必须加引号。
实体引用:用 <
来代替字符 < 。类似总共五个。
注释:<!-- This is a comment -->
空格保留:HTML 中多个空格会被合并为一个,在 XML 中,空格不会被合并。
# XML 元素 vs 属性
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
在第一个实例中,sex 是一个属性。在第二个实例中,sex 是一个元素。这两个实例都提供相同的信息。
没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用元素。
我的经验是在 HTML 中,属性用起来很便利,但是在 XML 中,您应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用元素吧。
属性难以阅读和维护。请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。
# XML 命名空间
XML 命名空间提供避免元素命名冲突的方法。
在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。
使用前缀来避免命名冲突
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
当在 XML 中使用前缀时,一个所谓的用于前缀的命名空间必须被定义。
命名空间是在元素的开始标签的 xmlns 属性中定义的。 命名空间声明的语法如下。xmlns:前缀=“URL”。
<root>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table xmlns:f="http://www.w3cschool.cc/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>