自定义XML
目录:
xml简介
xml语法
dtd简介
dtd语法
案例
XML
简介
1、XML 指可扩展标记语言(eXtensible Markup Language)
2、XML 被设计用来传输和存储数据,是通用的数据传输方式,兼容性非常好,XML 于 1998 年 2 月 10 日成为 W3C 的推荐标准。
3、XML和HTML结构非常像,但两者有着本质区别。XML针对数据传输。HTML针对数 据展示
4、因为 XML 语言没有预定义的标签,所以如果我们要规范XML那么就必须用到DTD文件了
XML实例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html SYSTEM "TrainNumber03.dtd">
<Person>
<Name>张三</Name>
<Age>18</Age>
<Sex>女</Sex>
</Person>
注意:xml文件开通一定要声明
version 代表版本 encoding 代表编码格式
<?xml version="1.0" encoding="UTF-8"?>
dtd文件
简介
文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。简单了解就是制定了xml数据格式规范。
语法
xml使用DTD
方法1:外部文件引入XML
<!DOCTYPE 根节点名称 SYSTEM "文件名.dtd">
方法2:使用内部dtd文件
<!DOCTYPE 根节点名称 [
dtd文件信息
]>
元素
声明节点。并指定它的子节点
dtd:
单个子节点
<!ELEMENT a (b)>
多个子节点
<!ELEMENT a (b, c)>
声明一下子节点(也可用不声明,不声明那么就是混乱规则。子节点内的规则并没有被元素)
<!ELENEET b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
xml
<a>
<b>1<b>
<c>c<c>
<a>
声明一个文本节点
dtd:
<!ELEMENT a (#PCDATA)>
xml:
<a>我是文本<a>
声明一个空节点
dtd:
<!ELEMENT br EMPTY>
XML:
<br />
特别注意:子节点可多个根节点只能有一个
属性
语法:
<!ATTLIST 点名称 属性名称 CDATA #REQUIRED| #IMPLIED| #FIXED "固定的值">
例:
dtd:
<!ELEMENT note EMPTY>
<!ATTLIST note border CDATA #REQUIRED>
xml:
<note border="1"/>
REQUIRED: 必须设置该属性
IMPELIPD:可用设置也可用不设置
FIXED:说明该属性取值固定为一个值,在XML中不能为该属性设置其它值。 但需要为该属性提供这个值.
FIXED的声明方式
dtd
<!ATTLIST sender company CDATA #FIXED "Microsoft">
合法的 XML:
<sender company="Microsoft" />
非法的 XML:
<sender company="W3Schools" />
元素次数限制
也就是我们指定子节点在其父节点中出现的次数
符号 | 次数 |
---|
- | 1 ~ n
- | 0 ~ n
? | 0 ~ 1
不指定|必须也只能出现 1次
例:
<!ELEMENT Persons (Person+)>
案例
使用xml展示车次信息,并使用dtd规范格式
DTD:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT TrainNumbers (TrainNumber+)>
<!ELEMENT TrainNumber (Number, Startadd, Endadd, StartTime, EndTime, Diachronic)>
<!ELEMENT Number (#PCDATA)>
<!ELEMENT Startadd (#PCDATA)>
<!ELEMENT Endadd (#PCDATA)>
<!ELEMENT StartTime (#PCDATA)>
<!ELEMENT EndTime (#PCDATA)>
<!ELEMENT Diachronic (#PCDATA)>
XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE TrainNumbers SYSTEM 'TrainNumberD.dtd'>
<TrainNumbers>
<TrainNumber>
<Number>k1375</Number>
<Startadd>长沙</Startadd>
<Endadd>上海南</Endadd>
<StartTime>00:06</StartTime>
<EndTime>15:13</EndTime>
<Diachronic>15:07</Diachronic>
</TrainNumber>
<TrainNumber>
<Number>G1342</Number>
<Startadd>长沙南</Startadd>
<Endadd>上海虹桥</Endadd>
<StartTime>07:06</StartTime>
<EndTime>12:14</EndTime>
<Diachronic>05:08</Diachronic>
</TrainNumber>
<TrainNumber>
<Number>G1778</Number>
<Startadd>长沙南</Startadd>
<Endadd>上海虹桥</Endadd>
<StartTime>07:15</StartTime>
<EndTime>12:54</EndTime>
<Diachronic>07:22</Diachronic>
</TrainNumber>
</TrainNumbers>