### Xml的出現解決了如下的問題
? 1 程序間數據的傳輸的問題
? 2 XMl可以做配置文件
? 3 Xml可以充當小型的數據庫
HTML的缺點(相對Xml)
?1 HTML標簽是規定好的,用戶不能進行自定義
?2 HTML文件顯示的樣式和數據是綁定在一起的,數據沒有復用
?3 HTML標簽是沒有含義的
簡單語法:
1、注釋 <!--d adad-->
2、CDATA節
面試題:如何使用XML文件來傳遞和保存一個圖片
使用程序先讀入內存,然后在保存到XML文件的<![CDATA[]]>節中。
<介紹><![CDATA[@123412312313]]></介紹>
### 所有 XML 元素都須有關閉標簽
在 HTML,經常會看到沒有關閉標簽的元素:
~~~
<p>This is a paragraph
<p>This is another paragraph
~~~
在 XML 中,省略關閉標簽是非法的。所有元素都*必須*有關閉標簽:
~~~
<p>This is a paragraph</p>
<p>This is another paragraph</p>
~~~
注釋:您也許已經注意到 XML 聲明沒有關閉標簽。這不是錯誤。聲明不屬于XML本身的組成部分。它不是 XML 元素,也不需要關閉標簽。
### XML 標簽對大小寫敏感
XML 元素使用 XML 標簽進行定義。
XML 標簽對大小寫敏感。在 XML 中,標簽 <Letter> 與標簽 <letter> 是不同的。
必須使用相同的大小寫來編寫打開標簽和關閉標簽:
~~~
<Message>這是錯誤的。</message>
<message>這是正確的。</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=08/08/2008>
<to>George</to>
<from>John</from>
</note>
~~~
~~~
<note date="08/08/2008">
<to>George</to>
<from>John</from>
</note>
~~~
在第一個文檔中的錯誤是,note 元素中的 date 屬性沒有加引號。
### 實體引用
在 XML 中,一些字符擁有特殊的意義。
如果你把字符 "<" 放在 XML 元素中,會發生錯誤,這是因為解析器會把它當作新元素的開始。
這樣會產生 XML 錯誤:
~~~
<message>if salary < 1000 then</message>
~~~
為了避免這個錯誤,請用一個*實體引用*來代替 "<" 字符:
~~~
<message>if salary
~~~
<
~~~
1000 then</message>
~~~
在 XML 中,有 5 個預定義的實體引用:
| < | < | 小于 |
|-----|-----|-----|
| > | > | 大于 |
| & | & | 和號 |
| ' | ' | 單引號 |
| " | " | 引號 |
注釋:在 XML 中,只有字符 "<" 和 "&" 確實是非法的。大于號是合法的,但是用實體引用來代替它是一個好習慣。
### XML 中的注釋
在 XML 中編寫注釋的語法與 HTML 的語法很相似:
~~~
<!-- This is a comment -->
~~~
### 在 XML 中,空格會被保留
HTML 會把多個連續的空格字符裁減為一個:
~~~
HTML: Hello my name is David.
輸出: Hello my name is David.
~~~
在 XML 中,文檔中的空格不會被刪節。
### XML 以 LF 存儲換行
在 Windows 應用程序中,換行通常以一對字符來存儲:回車符 (CR) 和換行符 (LF)。這對字符與打字機設置新行的動作有相似之處。在 Unix 應用程序中,新行以 LF 字符存儲。而 Macintosh 應用程序使用 CR 來存儲新行。
### ?DTD 介紹
DTD的主要用處是約束XML文件,也可以去約束HTML文件 XHTML文件
介紹下XML文件及DTD
在默認情況下,瀏覽器不去檢測的,我們需要自己寫代碼測試
checkDTD.html文件
~~~
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入DTD -->
<!DOCTYPE 班級 SYSTEM "class.dtd">
<班級>
<學生>
<名字>阿輝</名字>
<年齡>28</年齡>
<介紹>學習刻苦</介紹>
<adad/>
</學生>
<學生>
<名字>佩佩</名字>
<年齡>28</年齡>
<介紹>是個女孩</介紹>
</學生>
</班級>
~~~
~~~
<!ELEMENT 班級 (學生+)>
<!ELEMENT 學生 (名字,年齡,介紹)>
<!ELEMENT 名字 (#PCDATA)>
<!ELEMENT 年齡 (#PCDATA)>
<!ELEMENT 介紹 (#PCDATA)>
~~~
~~~
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>測試DTD</title>
<script language="javascript">
<!--
//創建一個XML解析器
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
//開啟校檢功能
xmldoc.validateOnParse = true;
xmldoc.load(class.xml);
document.write("錯誤信息="+xmldoc.parseError.reason+"</br>");
document.write(xmldoc.parseError.line);
window.alert("OK");
//-->
</script>
</head>
<body>
echo "oK!";
</body>
</html>
~~~
###DTD聲明及引用
### 內部的 DOCTYPE 聲明
假如 DTD 被包含在您的 XML 源文件中,它應當通過下面的語法包裝在一個 DOCTYPE 聲明中:
~~~
<!DOCTYPE 根元素 [元素聲明]>
~~~
### 外部文檔聲明
假如 DTD 位于 XML 源文件的外部,那么它應通過下面的語法被封裝在一個 DOCTYPE 定義中:
~~~
<!DOCTYPE 根元素 SYSTEM "文件名">
~~~
SYSTREM:便是引用本地的Dtd
下面是引入公開的Dtd
~~~
<!DOCTYPE 根元素 Public"文件名" “URL”>
~~~
### 語法:

具體事例
1、

錯誤的原因是,元素中含有未定義的元素或者文本,
修飾符:

### 聲明屬性
屬性聲明擁使用下列語法:
~~~
<!ATTLIST 元素名稱 屬性名稱 屬性類型 默認值>
~~~
### DTD 實例:
~~~
<!ATTLIST payment type CDATA "check">
~~~
### XML實例:
~~~
<payment type="check" />
~~~
參考資料:
PHP技術手冊?[http://www.php.net/manual/en/class.domnodelist.php](http://www.php.net/manual/en/class.domnodelist.php)
- 前言
- HTML(第一天)
- HTML(第二天)
- DIV+CSS(第一天)
- DIV+CSS(第二天)
- DIV+CSS(第三天)
- DIV+CSS(第四天)
- PHP開發環境配置說明
- PHP基礎數據類型及運算符介紹
- 走進PHP函數
- 走進位運算
- 走進數組及相關數組函數
- 面向對象的編程(類與對象)
- 面向對象的編程(類成員方法用法)
- 構造方法,析構方法
- static,global用法
- 靜態方法
- 面向對象的編程方法
- 接口方法
- 接口VS繼承、final、const
- 錯誤及異常處理機制、錯誤日志
- HTTP協議深度剖析
- 文件下載
- PHP數據庫編程
- 數據庫編程(2)
- 超全局變量
- Zend studio 開發環境入門
- 雇員管理系統(1)
- 雇員管理系統(2)
- 會話技術(cookie session)
- 會話技術 session場景使用介紹!
- PHP.in中session和cookie的配置說明
- PHP文件編程
- 報表及繪圖技術
- 報表及繪圖技術(jpgraph庫使用,Linux安裝及配置說明)
- XML基本語法及DTD介紹
- XML編程(Dom技術)
- XML編程(Xpath技術,simpleXml技術)基礎入門
- 網上支付平臺PHP版本
- javascript基礎入門