什么是xml?
<?xml version="1.0" encoding="UTF-8"?>
<!-- XML文件中必须具有根标签包裹-->
<catalog>
<book id="bk101">
<author>张伟</author>
<title>XML 开发指南</title>
<genre>计算机</genre>
<price>99.00</price>
<pub_date>2023-05-01</pub_date>
<description>深入探讨如何使用 XML 创建应用程序。</description>
</book>
<book id="bk102">
<author>李娜</author>
<title>午夜雨</title>
<genre>幻想</genre>
<price>45.50</price>
<pub_date>2023-07-20</pub_date>
<description>一个前建筑师在寻找魔法神器的过程中与巫师作斗争。</description>
</book>
<book id="bk103">
<author>王芳</author>
<title>梅芙的崛起</title>
<genre>幻想</genre>
<price>39.99</price>
<pub_date>2023-06-15</pub_date>
<description>罗马帝国崩溃后,曾经伟大的战士梅芙领导新的军队。</description>
</book>
<book id="bk104">
<author>王芳</author>
<title>奥伯龙的遗产</title>
<genre>幻想</genre>
<price>42.00</price>
<pub_date>2023-08-10</pub_date>
<description>《梅芙的崛起》的续集。</description>
</book>
<book id="bk105">
<author>李娜</author>
<title>被遗忘的圣杯</title>
<genre>幻想</genre>
<price>55.00</price>
<pub_date>2023-09-01</pub_date>
<description>寻找可以改变世界的传奇神器的冒险故事。</description>
</book>
</catalog>
这是一段xml代码
- XML指的是可扩展性标记语言
- XML被发明的目的是传输和存储数据而不是展示数据
- XML的标签必须自定义,但是标签名必须见名知意
- XML是W3C推举的数据传输格式
- 规范了数据使数据易读易处理
XML的主要用途
- 数据传输
- 程序之间的数据通信
- 配置文件
XML和HTML的区别
- HTML标签不能自定义,XML标签只能自定义
- HTML语法要求不严格,XML语法要求非常严格必须是成对标签
- HTML用来展示数据,XML用来传输和存储数据
语法规则
- XML必须有根结点,根节点就是其他节点的父级结点
- 标签必须成对存在
<name></name>
- 标签名大小写敏感
<Name></name>
- 标签不能交叉编写
<name>"张三"<sex>"男"</name></sex>
-
特殊字符需要使用实体:
- <![CDATA[...]]>中的内容不解析
<root>
<code>代码测试</code>
<msg><![CDATA[这里的代码不解析 ]]></msg>
</root>
- 一个标签可以有一个或多个属性,属性值必须使用引号括起来,属性值就是表示标签自身一些额外的信息
<people>
<student>
<name>zhangsan</name>
<age>23</age>
</student>
<student>
<name age="22">lisi</name>
</student>
</people>
DTD约束
什么是DTD?
W3school文档
文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
<?xml version="1.0" encoding="UTF-8"?>
<!-- 直接在xml内部定义DTD约束-->
<!DOCTYPE students[
<!--约束根元素中包含哪些元素-->
<!ELEMENT students (student+)>
<!--约束一级子元素中包含哪些二级元素-->
<!ELEMENT student (name,age?,sex,hobbys?)>
<!--约束二级元素hobby中包含哪些三级元素-->
<!ELEMENT hobbys (hobby+)>
<!--约束具体二级元素-->
<!-- <!ELEMENT name (子元素/元素类型)> -->
<!-- 只有 PCDATA 的元素通过圆括号中的 #PCDATA 进行声明-->
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!--约束student元素中的属性-->
<!-- <!ATTLIST 元素名称 属性名称 属性类型 默认值>-->
<!ATTLIST student id ID #REQUIRED>
]>
属性类型选项
设置默认参数值