1 xml基本定义
xml产生于SGML和HTML之后,结合了这两门语言的优点。
xml彻底的将文档的结构和数据与显示样式分离开来。
看一下xml的简单定义,以供后面例子使用。
Xml代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <books>  
  3.     <book>  
  4.         <title>xml</title>  
  5.         <author>Bob</author>  
  6.         <price unit="RMB">20.0</price>  
  7.     </book>  
  8. </books>  
  9.     
<?xml version="1.0" encoding="UTF-8"?> <books> <book> <title>xml</title> <author>Bob</author> <price unit="RMB">20.0</price> </book> </books>
在这里不仅定义了节点,还定义了一个节点属性
2 dtd
任何一个xml文档,都可以包含一个它的约束dtd。dtd分为外部dtd和内部dtd。
  • 外部dtd的定义方式 Xml代码
  1. <?xml version="1.0" encoding="GB2312"?>    
  2. <!ELEMENT books (book*)>  
  3. <!ELEMENT book ( title,author,price)>  
  4. <!ELEMENT title (#PCDATA)>  
  5. <!ELEMENT author (#PCDATA)>  
  6. <!ELEMENT price (#PCDATA)>  
  7. <!ATTLIST price unit CDATA "RMB">  
<?xml version="1.0" encoding="GB2312"?> <!ELEMENT books (book*)> <!ELEMENT book ( title,author,price)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT price (#PCDATA)> <!ATTLIST price unit CDATA "RMB">
在xml中引用dtd的方法
Xml代码
  1. <!DOCTYPE books SYSTEM “DTD-URL”>或者  
  2. <!DOCTYPE books PUBLIC "DTD名称" "DTD-URL">  
<!DOCTYPE books SYSTEM “DTD-URL”>或者 <!DOCTYPE books PUBLIC "DTD名称" "DTD-URL"> 内部dtd的定义方式 Xml代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE books [  
  3. <!ELEMENT books (book*)>  
  4. <!ELEMENT book ( title,author,price)>  
  5. <!ELEMENT title (#PCDATA)>  
  6. <!ELEMENT author (#PCDATA)>  
  7. <!ELEMENT price (#PCDATA)>  
  8. <!ATTLIST price unit CDATA "RMB">  
  9. ]  
  10. <books>  
  11.     <book>  
  12.         <title>xml</title>  
  13.         <author>Bob</author>  
  14.         <price unit="RMB">20.0</price>  
  15.     </book>  
  16. </books>  
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE books [ <!ELEMENT books (book*)> <!ELEMENT book ( title,author,price)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT price (#PCDATA)> <!ATTLIST price unit CDATA "RMB"> ] <books> <book> <title>xml</title> <author>Bob</author> <price unit="RMB">20.0</price> </book> </books>

关于dtd中定义的说明    a 复合元素定义
Xml代码
  1. <!ELEMENT books(book*)>  
  2. MENT book (title,author,price)>  
<!ELEMENT books(book*)> <!ELEMENT book (title,author,price)> 在这里面我们要注意的是元素出现的次数
引用
? 不出现或者出现一次
* 不出现或者出现多次(任意次,包括0)
+ 必须出现一次以上
无符号 只能出现一次

   b 基本元素定义
Xml代码
  1. <!ELEMENT   title (#PCDATA)>  
<!ELEMENT title (#PCDATA)>
   c 空元素定义
Xml代码
  1. <!ELEMENT   hr   EMPTY>  
<!ELEMENT hr EMPTY>
   d 定义元素属性
Xml代码
  1. <!ATTLIST price unit CDATA "RMB">  
<!ATTLIST price unit CDATA "RMB">
   e 属性的赋值特征
引用 #REQUIRED 元素的属性是必须的
#IMPLIED 元素的属性是可有可无的
#FIX 元素的属性的值是固定不变的
默认值 字符数据

   f 属性值的类型
引用 CDATA ENUMERATED ID IDREF ENTITY ENTITIES NOTATION等等。

3 实体
  • 内部实体
    Xml代码
  1. <?xml version="1.0" encoding="GB2312"?>    
  2. <!DOCTYPE books   [   
  3. ...  
  4. <!ENTITY   author "Bob">  
  5. ...  
  6. ]>  
  7. <books>  
  8. <book>  
  9. ...  
  10. <author>&author;  </author>  
  11. ...  
  12. </book>  
  13. </books>  
<?xml version="1.0" encoding="GB2312"?> <!DOCTYPE books [ ... <!ENTITY author "Bob"> ... ]> <books> <book> ... <author>&author; </author> ... </book> </books>
外部实体 Xml代码
  1. <?xml version="1.0" encoding="GB2312"?>    
  2. <!DOCTYPE books   [   
  3. ...  
  4. <! ENTITY   author   SYSTEM   “entities1.dtd” >  
  5. ...  
  6. ]>  
  7. <books>  
  8. <book>  
  9. ...  
  10. <author>&author;  </author>  
  11. ...  
  12. </book>  
  13. </books>  
<?xml version="1.0" encoding="GB2312"?> <!DOCTYPE books [ ... <! ENTITY author SYSTEM “entities1.dtd” > ... ]> <books> <book> ... <author>&author; </author> ... </book> </books>
预定义实体 Xml代码
  1. <title>我说:&quot; 再见!&quot; </ title>  
<title>我说:&quot; 再见!&quot; </ title>
参数实体 Xml代码
  1. <?xml version="1.0" encoding="GB2312"?>  
  2.      <!ENTITY   % para   “bp”>  
  3.      <!ELEMENT reference ((%para;)+)>  
  4.      <!ELEMENT %para; (title,author)>  
  5.      <!ELEMENT title (#PCDATA)>  
  6.      <!ELEMENT author (#PCDATA)>  
<?xml version="1.0" encoding="GB2312"?> <!ENTITY % para “bp”> <!ELEMENT reference ((%para;)+)> <!ELEMENT %para; (title,author)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)>
引用外部DTD中定义的参数实体的XML文档paper.xml代码如下:
Xml代码
  1.       
  2. <?xml version="1.0" encoding="GB2312" ?>  
  3.      <!DOCTYPE reference SYSTEM "referrence.dtd" [  
  4.          <!ENTITY   % para   "paper">  
  5.      ]>   
  6.     <reference>  
  7.     <paper>  
  8.     <title>xml</title>  
  9.     <author>Bob</author>  
  10.     </paper>  
  11.     </reference>  
<?xml version="1.0" encoding="GB2312" ?> <!DOCTYPE reference SYSTEM "referrence.dtd" [ <!ENTITY % para "paper"> ]> <reference> <paper> <title>xml</title> <author>Bob</author> </paper> </reference>
引用外部DTD中定义的参数实体的XML文档book.xml代码如下:
Xml代码
  1.       
  2. <?xml version="1.0" encoding="GB2312" ?>  
  3. <!DOCTYPE reference SYSTEM "referrence.dtd" [  
  4.           <!ENTITY   % para   "book">    
  5. ]>   
  6. <reference>  
  7. <book>  
  8. <title>JS</title>  
  9. <author>JNotnull</author>  
  10. </book>  
  11. </reference>  
<?xml version="1.0" encoding="GB2312" ?> <!DOCTYPE reference SYSTEM "referrence.dtd" [ <!ENTITY % para "book"> ]> <reference> <book> <title>JS</title> <author>JNotnull</author> </book> </reference>