JavaWeb_ XML文件
百度百科 传送门
W3school 传送门
XML语言(可扩展标记语言):是一种表示数据的格式,按照xml规则编写的文本文件称为xml文件
Learn
二、DTD约束
三、schema约束(DTD下一代)
html也是标记语言,html里面的标记是固定的,每个标记有自己的功能(标记我们可以自己定义)
XML文件用来表示数据,用来做数据传输,web开发中很多配置文件,都使用XML编写,XML配置文件结构清晰,配置清楚
编写XML文件
Gary->src->New->Other->XML->XML File->NewFile.xml
<?xml version="1.0" encoding="UTF-8"?> <goodlist> <good> <price>12</price> <name>香蕉</name> <place>广州</place> </good> <good> <price>39</price> <name>苹果</name> <place>北京</place> </good> <good> <price>33</price> <name>芒果</name> <place>深圳</place> </good> </goodlist>
文档声明 (必须放到第一行!!)
<?xml version="1.0" encoding="UTF-8"?>
version="1.0" 声明用的xml版本是1.0
encoding="UTF-8" 声明用xml传输数据的时候的字符编码
根元素、标签和属性名自定义
goodslist 根元素(必须要有一个根元素)
good 标签
id 属性名
"1001" 属性值 (必须使用双引号)
by = Gary 属性名和属性值
添加注释快捷键 Ctrl+Shift+C
<!-- 这是注解 -->
二、DTD约束 传送门
DTD用来约束xml文档,规定xml文档中元素的名称,子元素的名称和顺序,元素的属性
新建一个note.xml文件,Gary->src->New->Other->XML->XML File->note.xml
内部引用DTD约束
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>China</to> <from>Gary</from> <heading>Readme</heading> <body>Welcome!!!</body> </note>
<!DOCTYPE note[ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]>
!DOCTYPE note (第二行)定义此文档是 note 类型的文档。
!ELEMENT note (第三行)定义 note 元素有四个元素:"to、from、heading,、body"
!ELEMENT to (第四行)定义 to 元素为 "#PCDATA" 类型
!ELEMENT from (第五行)定义 from 元素为 "#PCDATA" 类型
!ELEMENT heading (第六行)定义 heading 元素为 "#PCDATA" 类型
!ELEMENT body (第七行)定义 body 元素为 "#PCDATA" 类型
1)规定了note.xml文档里面必须要有note标签
2)规定文档里面标签顺序
3)规定文档里面必须要存在所有约束标签
外部引用DTD约束(本地)
将DTD约束单独放到dtd文件中,xml文件再引用dat文件中约束
<?xml version="1.0" encoding="UTF-8"?> <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
外部 DTD 约束 XML 源文件,通过下面的语法封装在一个 DOCTYPE 定义中
<!DOCTYPE 根元素 SYSTEM "文件名">
(缺少body标签报错了!!!)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>China</to> <from>Gary</from> <heading>Readme</heading> <!-- <body>Welcome!!!</body> --> </note>
外部引用DTD约束(网络)
Struts框架的配置文档的首行
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
三、schema约束(DTD下一代) 传送门 后缀为xsd
- XML Schema 可针对未来的需求进行扩展
- XML Schema 更完善,功能更强大
- XML Schema 基于 XML 编写
- XML Schema 支持数据类型
- XML Schema 支持命名空间
定义可出现在文档中的元素
定义可出现在文档中的属性
定义哪个元素是子元素
定义子元素的次序
定义子元素的数目
定义元素是否为空,或者是否可包含文本
定义元素和属性的数据类型
定义元素和属性的默认值以及固定值
新建一个schema文件,Gary->src->New->Other->XML->XML Schema File->note.xsd
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3school.com.cn" xmlns="http://www.w3school.com.cn" elementFormDefault="qualified"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
xsd命名空间
targetNamespace="http://www.w3school.com.cn"
xmlns="http://www.w3school.com.cn"
指出任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定
elementFormDefault="qualified"
使用schema约束
创建一个note3.xml文件
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3school.com.cn" xmlns="http://www.w3school.com.cn" elementFormDefault="qualified"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>