XML的学习

1.1 XML简介
1、XML(eXtensible Markup Language,可扩展标记语言),可以自定义标签。
2、基于文本格式,所以XML可以跨平台、跨语言
3、标签没有预定义,需要自定义
4、XML用来保存和传输数据,不是用来显示数据的。(HTML用来显示数据)
5、XML是元语言(可以通过此语言创造其他语言的语言成为元语言)


1.2 XML文档结构
1、第一行是XML声明,包括版本和字符编码
<?xml version="1.0" encoding="utf-8" ?>
2、XML文档是一个树型结构,它总是从“树根”开始,然后扩展到树叶。
3、XML文档必须要包含根元素。


1.3 XML节点的分类
<stu id="001"> 小明 </stu>

1、stu 为元素节点
2、小明 为值节点
3、 id 为属性节点

1.4 数据的分类
1、PCDATA:parse character data(可解析字符数据)由解析器解析
2、CDATA:character data,不会由解析器解析
3、元素后一般是PCDATA,属性后一般是CDATA


1.5 DTD

1DTDdocument type definition(文档类型定义)
2DTD用来验证XML文档是否有效
3DTD可以是一个独立的文件(外部DTD),也可以是嵌套在XML文档中(内部DTD

1.5.1 语法:

<!ELEMENT 元素 (子元素) >
<!ELEMENT 元素 (#PCDATA)>
<!ELEMENT 元素 EMPTY> 空标记
<!ELEMENT 元素 ANY >

1.5.2 引用外部DTD

引用外部DTD有两个关键字
1、SYSTEM:引用自定义的DTD文件
<!DOCTYPE 根元素 SYSTEM “文件名”>
2、PUBLIC:引用互联网的DTD文件
<!DOCTYPE HTML PUBLIC "DTD名称" "dtd的域名地址">
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE movies [
<!ELEMENT movies (movie+)>
<!ELEMENT movie (title,actor+,rating)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT actor (#PCDATA)>
<!ELEMENT rating (#PCDATA)>
]>
<?xml version="1.0" encoding="UTF-8"?>
<movies>
<movie>
<title>西游记</title>
<actor>六小龄童</actor>
<actor>马德华</actor>
<rating>大家一起看</rating>
</movie>
<movie>
<title>水浒传</title>
<actor>宋江</actor>
<rating>大人陪同</rating>
</movie>
</movies>

1.5.3 引用内部DTD

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE movies [
<!ELEMENT movies (movie+)>
<!ELEMENT movie (title,actor+,rating)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT actor (#PCDATA)>
<!ELEMENT rating (#PCDATA)>
]>
<movies>
<movie>
<title>西游记</title>
<actor>六小龄童</actor>
<actor>马德华</actor>
<rating>大家一起看</rating>
</movie>
<movie>
<title>水浒传</title>
<actor>宋江</actor>
<rating>大人陪同</rating>
</movie>
</movies>

1.6 实体

实体又分为:一般实体,参数实体。
一般实体中分为:预定义实体,自定义实体。

1.6.1 预定义实体

实体名称 字符
lt ---------- <
gt --------- >
amp ------ &
quot ------- “
apos ------- ‘


1.6.2 自定义实体

语法:<!ENTITY 实体名 实体值 >
调用实体:&实体名;

1.6.3 参数实体

参数实体和一般实体声明的时候很相似,区别是参数实体前面有”%”
语法:<!ENTITY % 实体名 ‘实体默认值’>
例子:
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % p 'test'>
<!ELEMENT roster ((%p;)+)>
<!ELEMENT %p; (name,sex,birthday,score?,skill+)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ELEMENT birthday (#PCDATA)>
<!ELEMENT score (#PCDATA)>
<!ELEMENT skill (#PCDATA)>
<!ATTLIST %p; id ID #REQUIRED>
XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE roster SYSTEM "10-demo.dtd"[
<!ENTITY % p "teacher">
]>
<roster>
<teacher id="t001">
<name></name>
<sex></sex>
<birthday></birthday>
<skill></skill>
<skill></skill>
</teacher>
</roster>
posted @   zpchcbd  阅读(203)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥
点击右上角即可分享
微信分享提示