命名规范:
区分大小写 <p><P>
字母或下划线开头 abc _abc
不能以xml(或XML、Xml等)开头----W3C保留日后使用;
不能有空格或制表符;
不能使用冒号 : (有特殊用途)
注释:
<!— 被注释的内容 --> //注释不能嵌套
//可以使用eclipse的多行注释的快捷键
CDATA区
<![CDATA[ ... ]]> //将CDATA区里面的东西进行原样输出
(三)DTD约束
DTD //看懂即可
//已经被Schema全面替代了
用来约束xml文件中 标签的名称,属性,顺序,次数等。
"要求掌握"
1,如何把DTD拷贝到项目中
2,如何根据DTD自动生成xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT 书架(书+)> //根标签 书架 子标签 书 出现1次或多次
<!ELEMENT 书 (书名,作者,售价)> //书这个子标签 中有三个子标签 书名,作者,售价 逗号间隔,顺序不能乱。1次。
<!ELEMENT 书名 (#PCDATA)> //#PCDATA 可以有标签体,文本。
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
写xml之前,需要引入DTD文件
引入格式:
<!DOCTYPE 书架 SYSTEM "book.dtd">//"book.dtd" 可以写路径
引入了写好的DTD文件后, 格式就必须跟DTD文件保持一致
语法细节
在DTD文档中使用ELEMENT关键字来声明一个XML元素。
语法:<!ELEMENT 元素名称 (使用规则)>
使用规则:
标签体的规则:
(#PCDATA):指示元素的主体内容只能是普通的文本.(Parsed Character Data)
EMPTY:用于指示元素的主体为空。即没有子标签。比如<br/>
ANY:用于指示元素的主体内容为任意类型。
(子元素):指示元素中包含的子元素
定义子元素及描述它们的关系:
逗号,说明必须按照声明顺序去编写XML文档。
如: <!ELEMENT FILE (TITLE,AUTHOR,EMAIL)
"|",说明任选其一。
如:<!ELEMENT FILE (TITLE|AUTHOR|EMAIL)
用+、*、?表示元素出现的次数
如果元素后面没有+*?:表示必须且只能出现一次
+:一次或多次
*:零次、一次或多次
?:零次或一次
属性规则:
在DTD文档中使用ATTLIST关键字来为一个元素声明属性。
语法:
<!ATTLIST 元素名
属性名1 属性值类型 设置说明
属性名2 属性值类型 设置说明
…
>
属性值类型:
CDATA:表示属性的取值为普通的文本字符串
ENUMERATED (DTD没有此关键字):表示枚举,只能从枚举列表中任选其一,如(鸡肉|牛肉|猪肉|鱼肉)
ID:表示属性的取值不能重复
设置说明
#REQUIRED:属性必须出现
#IMPLIED:属性可有可无
#FIXED: 属性的取值为一个固定值。语法:#FIXED "固定值"
直接值:属性的取值为该默认值
实例代码1
//约束
<!ATTLIST 商品
类别 CDATA #REQUIRED //CDATA 文本 #REQUIRED必须出现
颜色 CDATA #IMPLIED //#IMPLIED 可有可无
>
<?xml version = "1.0" encoding="GB2312" standalone="yes"?>
<商品 类别="服装"颜色="黄色" />
实例代码2
<?xml version = "1.0" encoding="GB2312" standalone="yes"?>
<!DOCTYPE 购物篮 [ //根标签是购物篮
<!ELEMENT 购物篮 (肉+)> //购物篮里面有标签肉 一次或者多次
<!ELEMENT 肉 EMPTY> //元素没有子标签
<!ATTLIST 肉 品种 ( 鸡肉 | 牛肉 | 猪肉 | 鱼肉 ) "鸡肉">//肉的属性
]>
<购物篮>
<肉 品种="鱼肉"/>
<肉 品种="牛肉"/>
<肉/> //没有给值,就是后面的默认值 鸡肉
</购物篮>
(四) Schema 约束
Schema约束自身就是一个XML文件,但它的扩展名通常为.xsd
一个XML Schema文档通常称之为模式文档(约束文档),遵循这个文档书写的xml文件称之为实例文档。
XML Schema对名称空间支持得非常好
理解:
名称空间: 相当于package
约束文档: 编写好的Person类
实例文档: 通过Person类创建对象
针对一个schema约束文档生成一个xml
右键新建一个xml File --- 点 next --- 定义一个xml文件名
--- 点 next --- 选择第二个,使用一个schema约束生成一个xml
--- 点 next --- 选择schema约束
--- 点 next --- 可以更改别名
--- 点击 finish
约束文档:
<?xml version='1.0' encoding='UTF-8' ?>
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' //标准的名称空间
targetNamespace='http://www.itheima.com'//将该schema文档绑定到
http://www.itheima.com名称空间
>
<xs:element name='书架' >
<xs:complexType>
<xs:sequence maxOccurs='unbounded' >
<xs:element name='书' >
<xs:complexType>
<xs:sequence>
<xs:element name='书名' type='xs:string' />
<xs:element name='作者' type='xs:string' />
<xs:element name='售价' type='xs:string' />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
实例文档:
<?xml version="1.0" encoding="UTF-8"?>
<itheima:书架 xmlns:itheima="http://www.itheima.com" //itheima 别名
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"//标准的名称空间的一个对象
xsi:schemaLocation="http://www.itheima.com book.xsd ">//名称空间 空格 约束文档的文件名
<书>
<书名>书名</书名>
<作者>作者</作者>
<售价>售价</售价>
</书>
</itheima:书架>
(五)综上所述
其实xml作为配置文件在实际开发中大量使用,但是我们也仅仅要会如何根据约束来创建出对于的xml文件即可。
这在eclipse或者idea里面都有自动提示的方式,所以我们也要多多利用开发工具。