xml數據的存儲和數據的交換,標籤中的內容<film><book>
hmtl數據的顯示,機器
都是從SGML發展過來的
xml的好處:
可擴展的沒有自己的標籤servlet中的web.xml配置文件
(xml的文檔,在java中讀取,java中有包,設計模式)
xml智能搜索,局部刷新ajax
DTD
DOM
CSS
XSL
Schema
XPATH XPoint
格式良好的文檔
1、第一句話必須是聲明語句<!--?xml必須緊挨着-->
2、必須有一個根元素
3、開始元素和結束元素必須成對出現(空標記例外)
4、大小寫敏感
5、標籤的正確嵌套<b><i></i></b>
6、屬性,必須是成對出現 屬性名=值,值必須是雙引號或者單引號書寫(建議雙引號)
元素和標記的區別
標記是單個的
元素時整體
簡單元素,文本字符串
複雜元素,由子元素構成
混合元素:包括簡單元素和複雜元素
混合類型(元素的名稱和元素的描述之間的空格不可少) 複雜類型,有順序的 元素的描述,屬性的描述 students.xml <聯繫人列表> <聯繫人 編號="p2" 上司="p2"> 實體: 在java中使用xml
數據交換DTD文檔和schema文檔Document Type Definition
DTD校驗,保證數據的一致性
1、內部DTD standlone="yes"
聲明的時候
<!DOCTYPE books[
<!ELEMENT books (book+)>
<!ELEMENT book (name,author,price)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT author (#PCDATA)>簡單類型
]>
standalone="yes"
示例:
<?xml version="1.0" encoding="gb2312" standalone="yes"?>
<!DOCTYPE students[
<!ELEMENT students (student+)>
<!ELEMENT student (name, age, score, sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT score (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
]>
<students>
<student>
<name>tom</name>
<age>18</age>
<score>98</score>
<sex>ff</sex>
</student>
<student>
<name>java</name>
<age>12</age>
<score>98</score>
<sex>ff</sex>
</student>
<student>
<name>jack</name>
<age>45</age>
<score>45</score>
<sex>ff</sex>
</student>
</students>
2、外部DTD
standalone = "no" ;
.dtd文檔
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT students (student+)>
<!ELEMENT student (name, age, score, sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT score (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
students.xml
<?xml version="1.0" encoding="gb2312" standalone="yes"?>
<!DOCTYPE students SYSTEM "studentDtd.dtd">
<students>
<student>
<name>tom</name>
<age>18</age>
<score>98</score>
<sex>ff</sex>
</student>
<student>
<name>java</name>
<age>12</age>
<score>98</score>
<sex>ff</sex>
</student>
<student>
<name>jack</name>
<age>45</age>
<score>45</score>
<sex>ff</sex>
</student>
</students>
3、公用DTD
定義屬性
<!ATTLIST 元素名稱
屬性名稱 屬性類型 缺省值
屬性名稱 屬性類型 缺省值
...
>
REQUIRED IMPLIED FIXED 字符串
studentDtd.dtd
<?xml version="1.0" encoding="GB2312"?>
<!ELEMENT students (student+)>
<!ELEMENT student (name, age, score, sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT score (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student id CDATA #REQUIRED
telephone CDATA #IMPLIED
school CDATA #FIXED "河南">
<?xml version="1.0" encoding="gb2312" standalone="no"?>
<!DOCTYPE students SYSTEM "studentDtd.dtd">
<students>
<student id="01" school="河南">
<name>tom</name>
<age>18</age>
<score>98</score>
<sex>ff</sex>
</student>
<student id="01">
<name>java</name>
<age>12</age>
<score>98</score>
<sex>ff</sex>
</student>
<student id="01">
<name>jack</name>
<age>45</age>
<score>45</score>
<sex>ff</sex>
</student>
</students>
屬性是ID類型的必須是以字母開頭或者是下劃線開始,並且不能重複
枚舉
cateary (編程語言|標記語言) "標記語言"
IDREF/IDREFS(多引用用 空格隔開)
CDATA的子集,NMTOKEN/NMTOKENS
實例一:
<?xml version = "1.0" encoding="GB2312" standalone = "yes"?>
<!DOCTYPE 聯繫人列表[
<!ELEMENT 聯繫人列表 ANY>
<!ELEMENT 聯繫人 (姓名,EMAIL)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT EMAIL (#PCDATA)>
<!ATTLIST 聯繫人 編號 ID #REQUIRED>
<!ATTLIST 聯繫人 上司 IDREF #IMPLIED>
]>
<聯繫人 編號="p1">
<姓名>張三</姓名>
<EMAIL>[email protected]</EMAIL>
</聯繫人>
<姓名>李四</姓名>
<EMAIL>[email protected]</EMAIL>
</聯繫人>
</聯繫人列表>
實例二:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root[
<!ELEMENT root (數據)+>
<!ELEMENT 數據 (#PCDATA)>
<!ATTLIST 數據
安全性 ( ON | OFF ) "OFF"
授權用戶 NMTOKENS #IMPLIED>
]
>
<root>
<數據 安全性="ON" 授權用戶 = "WANG da">
</數據>
</root>
<!ENTITY sunday "今天天氣很好" >
引用的時候&sunday;
命名空間
xmlns:前綴=命名空間
xmlns=命名空間 --------->默認的命名空間