概念
Extensilble Markup Language 可扩展编辑语言 可扩展:标签都是自定义的 例如:<user>
、<student>
功能
XML与HTML区别
XML标签自定义的、Html标签是预定义的
XML是语法严格的、Html是松散的
XML是存储数据的、Html是展示数据的
语法
XML文档的后缀名:.xml
第一行必须写文档声明
xml文档中有且仅有一个根标签
属性值必须使用引号,单双都可以
标签必须有结束(正确关闭)
xml标签名称区分大小写
例子 1 2 3 4 5 6 7 8 9 10 11 <?xml version="1.0" ?> <users > <user > <name > 张三</name > <age > 18</age > </user > <user > <name > 李四</name > <age > 17</age > </user > </users >
组成部分
文档声明
格式:<?xml 属性列表 ?>
属性列表:
version:版本号,必须属性
encoding:编码方式,默认:iso-8859-1
standalone:是否独立(是否依赖其他文件:yes、no)
指令(结合css控制标签样式的,了解以下即可)
<?xml-stylesheet type="text/css" href="a.css">
标签
属性
文本
CDATA区:在区域中的文本将会原样展示
格式:<![CDATA[展示的数据]]>
约束
规定xml文档的书写规则
作为框架的使用者(程序员)
能够在xml中引入约束文档
能够简单的读懂约束文档
分类
DTD:一种简单的约束技术,但有缺陷
Schema:一种复杂的约束技术
DTD
引入DTD文档道xml文档中
内部DTD:将约束规则定义在xml文档中
外部DTD:将约束规则定义在xml文档外
缺陷:不能对内容进行约束,例如年龄
解决方法:使用Schema技术约束
DTD例子
1 2 3 4 5 6 <!ELEMENT students (student *) > <!ELEMENT student (name ,age ,sex )> <!ELEMENT name (#PCDATA )> <!ELEMENT age (#PCDATA )> <!ELEMENT sex (#PCDATA )> <!ATTLIST student number ID #REQUIRED >
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE students SYSTEM "student.dtd" > <students > <student number ="itcast_0001" > <name > tom</name > <age > 18</age > <sex > male</sex > </student > </students >
Schema约束技术
xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?xml version="1.0" encoding="UTF-8" ?> <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 ="heima_0001" > <name > tom</name > <age > 18</age > <sex > male</sex > </student > </students >
约束
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 <?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 ="heima_\d {4} " /> </xsd:restriction > </xsd:simpleType > </xsd:schema >