xml产生于SGML和HTML之后,结合了这两门语言的优点。
xml彻底的将文档的结构和数据与显示样式分离开来。
看一下xml的简单定义,以供后面例子使用。
Xml代码
- <?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代码
- <?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代码
- <!DOCTYPE books SYSTEM “DTD-URL”>或者
- <!DOCTYPE books PUBLIC "DTD名称" "DTD-URL">
- <?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代码
- <!ELEMENT books(book*)>
- MENT book (title,author,price)>
引用
? 不出现或者出现一次
* 不出现或者出现多次(任意次,包括0)
+ 必须出现一次以上
无符号 只能出现一次
b 基本元素定义
Xml代码
- <!ELEMENT title (#PCDATA)>
c 空元素定义
Xml代码
- <!ELEMENT hr EMPTY>
d 定义元素属性
Xml代码
- <!ATTLIST price unit CDATA "RMB">
e 属性的赋值特征
引用 #REQUIRED 元素的属性是必须的
#IMPLIED 元素的属性是可有可无的
#FIX 元素的属性的值是固定不变的
默认值 字符数据
f 属性值的类型
引用 CDATA ENUMERATED ID IDREF ENTITY ENTITIES NOTATION等等。
3 实体
- 内部实体
Xml代码
- <?xml version="1.0" encoding="GB2312"?>
- <!DOCTYPE books [
- ...
- <!ENTITY author "Bob">
- ...
- ]>
- <books>
- <book>
- ...
- <author>&author; </author>
- ...
- </book>
- </books>
外部实体 Xml代码
- <?xml version="1.0" encoding="GB2312"?>
- <!DOCTYPE books [
- ...
- <! ENTITY author SYSTEM “entities1.dtd” >
- ...
- ]>
- <books>
- <book>
- ...
- <author>&author; </author>
- ...
- </book>
- </books>
预定义实体 Xml代码
- <title>我说:" 再见!" </ title>
参数实体 Xml代码
- <?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代码
- <?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代码
- <?xml version="1.0" encoding="GB2312" ?>
- <!DOCTYPE reference SYSTEM "referrence.dtd" [
- <!ENTITY % para "book">
- ]>
- <reference>
- <book>
- <title>JS</title>
- <author>JNotnull</author>
- </book>
- </reference>