# xml
## 简介
**XML 被设计用来结构化、存储以及传输信息;设计宗旨是*传输数据*,而非显示数据。**
## 基本结构
* xml文件由若干xml元素构成,这些元素也称为xml节点或xml标签。
* xml元素的名称用<>括号括起:
```javascript
<element>
```
* 每个xml元素都需要关闭。
可以选择两种形式来编写,即开始元素和结束元素:
```javascript
<element></element>
```
元素自闭合:
```javascript
<element />
```
* xml元素可以包含其他子xml元素。
在这种情况下,xml元素需要以这种形式编写:
~~~
<parentelement>
<childrenelement />
</parentelement>
~~~
* xml元素可以有一个或多个属性。每个属性都是由属性名称和属性值生成的。属性值必须写在单引号或双引号内
~~~
<element attribute="value">
<childrenelement test1="value1" test2="value2" />
</element>
~~~
*注意:不允许在一个元素上重复属性,这将导致语法错误!*
* xml中有且只有一个,位于顶层结构的xml“根元素”。所有其他xml元素都被包含在其中。
* 对于krpano而言,此元素始终是<krpano>元素-例如:
~~~
<krpano onstart="...">
...
<preview url="..." />
<image>
<cube url="..." />
</image>
...
</krpano>
~~~
* 注释-注释是xml的一部分,在读取/解析xml时将被忽略。xml注释以以下内容开头:
~~~
<!--
~~~
以以下内容结束:
~~~
-->
~~~
注释中不允许使用字符串“--”(双连字符),这意味着不能嵌套注释。
例如:
~~~
<krpano ...>
<!-- this is a krpano example -->
...
</krpano>
~~~
## 大小写/字符编码/空格/不允许的字符
* xml元素和xml属性的名称区分大小写。因此开始元素和结束元素的名称需要一致。
*注意:对于xml语法规则,大小写非常重要,但对于krpano本身,xml元素的大小写并不重要;krpano将自动将所有元素和属性名称转换为小写,以使其krpano用法不区分大小写。*
* 为了避免字符编码问题,xml文件都应保存为Unicode UTF-8或UTF-16文件。在krpano中,文本编辑器在xml文件的开头添加一个小的隐藏头(称为UTF-BOM)。
* xml元素之间和xml属性之间的空格、制表符和换行符等空格字符将被忽略。但在属性值内部,它们会对元素产生影响,需要注意。
这使我们能更轻松自由的进行编写xml。但是为了更好的可读性,需要以一种层次结构清晰的方式,对元素进行缩进排版通是非常有必要的。
* 有些字符是xml语法本身保留的,因此不能直接使用。
![](https://img.kancloud.cn/25/68/2568be74591ecc8705db8491bedfd042_554x154.jpg)