xml入门 1

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>
原文地址:https://www.cnblogs.com/danghuijian/p/4400896.html