# 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語法本身保留的,因此不能直接使用。
