xml快速入门和xml约束方式
XML:
-
概念:Extersible Markup Language 可扩展标记语言
- 可扩展:标签都是自定义的。
- 可扩展:标签都是自定义的。
-
功能
- 存储数据
- 配置文件
- 在网络中传输
- 存储数据
-
xml与html的区别
- xml标签都是自定义的,html标签是预定义
- xml的语法严格,html语法松散
- xml是存储数据的,html是展示数据
-
w3c:万维网联盟
-
语法:
- 基本语法:
- xml文档的后缀名.xml
- xml第一行必须定义为文档声明
- xml文档中有且仅有一个根标签
- 属性值必须使用引号(单双都可)引起来
- 标签必须正确关闭
- xml标签名称区分大小写
- 基本语法:
-
快速入门
<?xml version="1.0" encoding="ISO-8859-1"?>
<users>
<user id = "1">
<name>张三</name>
<age>17</age>
<gender>男</gender>
</user>
<user id = "2">
<name>李四</name>
<age>28</age>
<gender>女</gender>
</user>
</users>
-
组成部分
- 文档声明
- 格式:
- 属性列表:
- version:版本号,必须的属性
- encoding:编码方式。告知解析引擎当前文档的字符集,默认值:IOS-8859-1
- standalone:是否独立
- 取值:
- yes:不依赖其他文件
- no:依赖其他文件
- 取值:
- 指令(了解):结合css的
xml <?xml-stylesheet type="test/css" href="css/a.css" ?>
- 标签:标签名称自定义的
- 规则:
- 名称可以包含字母,数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字母xml(或者XML、Xml 等等)开始
- 名称不能包含空格
- 规则:
- 属性
- id属性值唯一
- 文本:
- CDATA区:在该区域中的数据会呗原样展示
- 文档声明
-
约束:规定xml文档的书写规则
- 作为框架的使用者
- 能够在xml中引入约束文档
- 能够简单的读懂约束文档
分类: - DTD:一种简单的约束技术
- Schema:一种复杂的约束技术
- 作为框架的使用者
-
DTD:
- 引入dtd文档到xml文档中
- 内部dtd:将约束规则定义在xml文档中
- 外部dtd:将约束得规则定义在外部得dtd文件中
- 本地:
<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
- 网络:
<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">
- 本地:
- 引入dtd文档到xml文档中
<?xml version="1.0" encoding="GBK" ?>
<!--<!DOCTYPE students SYSTEM "student.dtd">-->
<!DOCTYPE students [
<!ELEMENT students (student*)>
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED>
]>
<students>
<student number="s001">
<name>zhangsan</name>
<age>23</age>
<sex>male</sex>
</student>
<student number="s002">
<name>lisi</name>
<age>24</age>
<sex>famale</sex>
</student>
</students>
student.dtd:
<!ELEMENT students (student*)>
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED>
- Schema:
<?xml version="1.0"?>
<xsd:schema xmlns="http://www.itcast.cn/xml"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.itcast.cn/xml" elementFormDefault="qualified">
<xsd:element name="students" type="studentsType"/>
<xsd:complexType name="studentsType">
<xsd:sequence>
<xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="studentType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="ageType" />
<xsd:element name="sex" type="sexType" />
</xsd:sequence>
<xsd:attribute name="number" type="numberType" use="required"/>
</xsd:complexType>
<xsd:simpleType name="sexType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="male"/>
<xsd:enumeration value="female"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ageType">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="256"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="numberType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="lala_\d{4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
<?xml version="1.0" encoding="gbk" ?>
<!--
1.填写xml文档的根元素
2.引入xsi前缀. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3.引入xsd文件命名空间.xsi:schemaLocation="http://www.itcast.cn/xml student.xsd"
4.为每一个xsd约束声明一个前缀,作为标识 xmlns="http://www.itcast.cn/xml"
-->
<students
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.itcast.cn/xml"
xsi:schemaLocation="http://www.itcast.cn/xml student.xsd"
>
<student number="lala_0001">
<name>zhangsan</name>
<age>100</age>
<sex>female</sex>
</student>
</students>