# XML 語法規則
XML 的語法規則很簡單,且很有邏輯。這些規則很容易學習,也很容易使用。
## 所有的 XML 元素都必須有一個關閉標簽
在 HTML 中,某些元素不必有一個關閉標簽:
```
<p>This is a paragraph.
<br>
```
在 XML 中,省略關閉標簽是非法的。所有元素都**必須**有關閉標簽:
```
<p>This is a paragraph.</p>
<br />
```
**注釋:**從上面的實例中,您也許已經注意到 XML 聲明沒有關閉標簽。這不是錯誤。聲明不是 XML 文檔本身的一部分,它沒有關閉標簽。
## 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>
```
在上面的實例中,正確嵌套的意思是:由于 <i> 元素是在 <b> 元素內打開的,那么它必須在 <b> 元素內關閉。
## XML 文檔必須有根元素
XML 文檔必須有一個元素是所有其他元素的**父元素**。該元素稱為**根元素**。
```
<root>
<child>
<subchild>.....</subchild>
</child>
</root>
```
## XML 屬性值必須加引號
與 HTML 類似,XML 元素也可擁有屬性(名稱/值的對)。
在 XML 中,XML 的屬性值必須加引號。
請研究下面的兩個 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>
```
在第一個文檔中的錯誤是,note 元素中的 date 屬性沒有加引號。
## 實體引用
在 XML 中,一些字符擁有特殊的意義。
如果您把字符 "<" 放在 XML 元素中,會發生錯誤,這是因為解析器會把它當作新元素的開始。
這樣會產生 XML 錯誤:
```
<message>if salary < 1000 then</message>
```
為了避免這個錯誤,請用**實體引用**來代替 "<" 字符:
```
<message>if salary < 1000 then</message>
```
在 XML 中,有 5 個預定義的實體引用:
| < | < | less than |
| > | > | greater than |
| & | & | ampersand |
| ' | ' | apostrophe |
| " | " | quotation mark |
**注釋:**在 XML 中,只有字符 "<" 和 "&" 確實是非法的。大于號是合法的,但是用實體引用來代替它是一個好習慣。
## XML 中的注釋
在 XML 中編寫注釋的語法與 HTML 的語法很相似。
<!-- This is a comment -->
## 在 XML 中,空格會被保留
HTML 會把多個連續的空格字符裁減(合并)為一個:
| HTML: | Hello Tove |
| Output: | Hello Tove |
在 XML 中,文檔中的空格不會被刪減。
## XML 以 LF 存儲換行
在 Windows 應用程序中,換行通常以一對字符來存儲:回車符(CR)和換行符(LF)。
在 Unix 和 Mac OSX 中,使用 LF 來存儲新行。
在舊的 Mac 系統中,使用 CR 來存儲新行。
XML 以 LF 存儲換行。
- XML 基礎
- XML 簡介
- XML 用途
- XML 樹結構
- XML 語法規則
- XML 元素
- XML 屬性
- XML 驗證
- 查看 XML 文件
- 使用 CSS 顯示 XML
- 使用 XSLT 顯示 XML
- XML Javascript
- XMLHttpRequest 對象
- XML Parser
- XML DOM
- XML to HTML
- XML 應用程序
- XML 進階
- XML 命名空間
- XML CDATA
- XML 編碼
- 服務器上的 XML
- XML DOM 高級
- XML 注意事項
- XML 相關技術
- 現實生活中的 XML
- XML 編輯器
- XML - E4X
- DTD 教程
- DTD 簡介
- DTD - XML 構建模塊
- DTD - 元素
- DTD - 屬性
- XML 元素 vs. 屬性
- DTD - 實體
- DTD 驗證
- DTD - 來自網絡的實例
- XML DOM
- XML DOM 簡介
- XML DOM 節點
- XML DOM 節點樹
- XML DOM 解析器
- XML DOM 加載函數
- XML DOM - 屬性和方法
- XML DOM - 訪問節點
- XML DOM 節點信息
- XML DOM 節點列表
- XML DOM 遍歷節點樹
- XML DOM 瀏覽器差異
- XML DOM - 導航節點
- XML DOM 獲取節點值
- XML DOM 改變節點值
- XML DOM 刪除節點
- XML DOM 替換節點
- XML DOM 創建節點
- XML DOM 添加節點
- XML DOM 克隆節點
- The XMLHttpRequest 對象
- XML DOM 節點類型
- XML DOM - Node 對象
- XML DOM - NodeList 對象
- XML DOM - NamedNodeMap 對象
- XML DOM - Document 對象
- XML DOM - DocumentImplementation 對象
- XML DOM - DocumentType 對象
- XML DOM - ProcessingInstruction 對象
- XML DOM - Element 對象
- XML DOM - Attr 對象
- XML DOM - Text 對象
- XML DOM - CDATASection 對象
- XML DOM - Comment 對象
- XMLHttpRequest 對象
- XML DOM Parse Error 對象
- XML DOM 解析器錯誤
- XSLT 教程
- XSL 語言
- XSLT 簡介
- XSLT 瀏覽器
- XSLT - 轉換
- XSLT <xsl:template> 元素
- XSLT <xsl:value-of> 元素
- XSLT <xsl:for-each> 元素
- XSLT <xsl:sort> 元素
- XSLT <xsl:if> 元素
- XSLT <xsl:choose> 元素
- XSLT <xsl:apply-templates> 元素
- XSLT - 在客戶端
- XSLT - 在服務器端
- XSLT - 編輯 XML
- XML 編輯器
- XSLT 元素參考手冊
- XSLT 函數
- XPath 教程
- XPath 簡介
- XPath 節點
- XPath 語法
- XPath 軸(Axes)
- XPath 運算符
- XPath Examples
- XPath、XQuery 以及 XSLT 函數函數參考手冊
- 函數參考手冊
- XQuery 教程
- XQuery 簡介
- XQuery 實例
- XQuery FLWOR 表達式
- XQuery FLWOR + HTML
- XQuery 術語
- XQuery 語法
- XQuery 添加元素 和屬性
- XQuery 選擇 和 過濾
- XQuery 函數
- XQuery 參考手冊
- XLink 和 XPointer 教程
- XLink 和 XPointer 簡介
- XLink 和 XPointer 語法
- XLink 實例
- XPointer 實例
- XLink 參考手冊
- XML Schema 教程
- XML Schema 簡介
- 為什么使用 XML Schemas?
- XSD 如何使用?
- XSD - <schema> 元素
- XSD 簡易元素
- XSD 屬性
- XSD 限定 / Facets
- XSD 復合元素
- XSD 空元素
- XSD 僅含元素
- XSD 僅含文本
- XSD 混合內容
- XSD 指示器
- XSD <any> 元素
- XSD <anyAttribute> 元素
- XSD 元素替換(Element Substitution)
- XSD 實例
- XSD 字符串 數據類型
- XSD 日期和時間數據類型
- XSD 數值數據類型
- XSD 雜項 數據類型
- XML 編輯器
- XML Schema 參考手冊
- XSD 元素
- XSD 限定/Facets
- SOAP 教程
- SOAP 簡介
- SOAP 語法
- SOAP Envelope 元素
- SOAP Header 元素
- SOAP Body 元素
- SOAP Fault 元素
- SOAP HTTP 協議
- SOAP 實例
- WSDL 教程
- WSDL 簡介
- WSDL 文檔
- WSDL 端口
- WSDL 綁定
- WSDL UDDI
- RSS 教程
- RSS 簡介
- RSS 歷史
- RSS 語法
- RSS <channel> 元素
- RSS <item> 元素
- RSS 發布您的 Feed
- RSS 閱讀器
- RSS 參考手冊
- RDF 教程
- RDF 簡介
- RDF 規則
- RDF 實例
- RDF 主要 元素
- RDF 容器 Elements
- RDF 集合
- RDF Schema (RDFS)
- RDF 都柏林核心元數據倡議
- OWL 簡介
- RDF 參考手冊
- XSL-FO 教程
- XSL-FO 簡介
- XSL-FO 文檔
- XSL-FO 區域
- XSL-FO 輸出
- XSL-FO 流
- XSL-FO 頁面
- XSL-FO 塊
- XSL-FO 列表
- XSL-FO 表格
- XSL-FO 與 XSLT
- XSL-FO 軟件
- XSL-FO 參考手冊
- SVG 教程
- SVG 簡介
- SVG 實例
- SVG 在 HTML 頁面
- SVG <rect>
- SVG <circle>
- SVG <ellipse>
- SVG <line>
- SVG <polygon>
- SVG <polyline>
- SVG <path>
- SVG <text>
- SVG Stroke 屬性
- SVG 濾鏡
- SVG 模糊效果
- SVG 陰影
- SVG 漸變 - 線性
- SVG 漸變- 放射性
- SVG 參考手冊
- 免責聲明