一.XML
【定义】
是一种用于标记电子文件使其具有结构性的标记语言,称为可扩展标记语言
【使用】
1.声明:在文件头声明 <?xml version="1.0" encoding="utf-8">
2.内容
元素:
a>标签、文本(空元素)
b>有且只有一个跟元素
c>区域大小写
d>属性值用“”引起来
e>结构:树状结构
f>实体应用:当文本中出校特殊符号时,我们要使用实体应用,比如当输入书名号《》,如果直接写的话,可能就会与标签<>冲突,这时我们可以用实体来显示<;<;还有另外一种方法用CDATA,形式未<CDATA[要书写的文本]>,这时系统会自动将符号解析为符号,不会发生冲突
格式:形式良好的XML,即符合上面元素的规范
二.与 HTML的区别
三.XML文档类型定义
在生活中,人类有一定的行为规范,比如过马路,不能闯红路灯,在中国,靠右形式。同样,XML文件也有一定的书写规范,那么谁来制约它那,出现了两个新的概念:DTD和schema
【DTD】
1.声明元素
a>内部
b>外部
<!ELEMENT 元素名(子元素)*> <!ELEMENT 子元素名(子元素1,子元素2)> <!ElEMENT 子元素名1 (#PCDATA)> <!--说明是最后一级目录-->
<!ELEMENT 子元素名2 EMPTY> <!--空元素->
XML引用DTD:
<!DOCTYPE 元素名 SYSTEM "book.dtd">
c>要验证XML是否符合DTD,要对XML解析
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); dbf.setValidating(true); DocumentBuilder builder =dbf.newDocumentBuilder(); builder.parse(new InputSource("XML文件名"));
d>元素出现的次数
一次:
至少一次:<!ELEMENT 元素名 (子元素名)>
零次或多次:<!ELEMENT 元素名 (子元素名+)>
零次或一次:<!ELEMENT 元素名 (子元素名*)>
或:<!ELEMENT 元素名 (子元素名?)>
且:<!ELEMENT 元素名 (子元素名1|子元素名2)>
混合:<!ELEMENT 元素名 (子元素名1,子元素名2)>
()表示一组<!ELEMENT 子元素名 (#PCDATA|子元素名)>
2.实体声明(要写在DTD中)
a>内置
<!ENTITY writer "shuang">
b>外部
3.声明属性(属性属于某一元素)
a>声明样式:
<!ATTLIST 元素名 属性名 属性值类别 属性值>
b>属性类别:CDATA(字符数据)、(en1|en2|..)(枚举类型).、ID(值为唯一的id)等等
c>属性的默认值:
值 默认值 #REQUIRED 属性值是必须的 #IMPLIED 属性不是必需的、隐含的 #FIXED VALUE 属性值是固定的 d>在XML中属性值的书写
<元素名 属性名=“属性值”>文本内容</元素名>
即使属性值是固定的,也得声明,只不过属性值要写在DTD中声明的属性值
【schema】
1.声明
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <!--命名空间,前缀是xs--> <xs:element name="email"> <xs:complexType> <!--说明元素复杂有多个 --> <xs:sequence> <!-- 元素严格按顺序排列 --> <xs:element name="to" type="xs:string"></xs:element> <xs:element name="date" type="xs:date"></xs:element> </xs:sequence> </xs:complexType> </xs:element> </schema>
2.XML中引用Schema
<?xml version="1.0" encoding="UTF-8"?> <email xmlns:xsi="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="email.xsd"> <!--文件名,应用哪个Schema--> <!-- 引用schema --> <to>s</to> <date>2017/5/24</date> </email>
【Schema与DTD的不同】
1.Schema基于XML编写,而DTD不是基于XML的
2.因为Schema基于XML编写,所以更容易扩展
3.Schema支持数据类型type,所以可保护数据通信
4.是DTD的继承者
5.一个文档中可重用多个Schema
注:IE不能识别DTD和Schema,只要XML是样式良好的XML,IE就能运行,要验证XML是否符合DTD或Schema,可以在MyEclipse.exe来运行