1、xml文件:进行数据传输交互
本文主要内容参考自xml教程
- xml(EXtensible Markup Language)的七大组成部分
- 文档声明:Document Declare(第一行,标明版本及字符集信息)
- 元素:Element(从根元素开始)
- 属性:Attribute(同一个元素不能有多个同名属性)
- 注释:Comment
- 实体字符:Entity Character(例如:< > & ’ " )
- 字符数据区:Character Data(例如:<![CDATA[select * from person where age > 20]]>,这里面的>不必进行实体转换)
- 处理指令:Process Instruction(为XML添加css用)
2、DTD约束:
- 引入dtd文件到xml中的两种方式
<!--在xml中引入存在于本地的dtd文件-->
格式:<!DOCTYPE 文档根节点 SYSTEM "DTD文件">
例子:<!DOCTYPE 书架 SYSTEM "book.dtd">
<!--在xml中引入存在于网络上的dtd文件-->
格式:<!DOCTYPE 文档根节点 PUBLIC "DTD名称" "DTD文件">
例子:<!DOCTYPE mapper PUBLIC
"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- 下面摘取mybatis-3-mapper.dtd的部分片段进行解析
<?xml version="1.0" encoding="UTF-8" ?>
<!--
1.Element用于约束节点标签,mapper子节点对应()中出现的,| 表示或者,PCDATA类型代表可被解析的(个人理解为可以被识别的自定义标签)
2.+ 代表 >=1 ,* 代表 >=0 ,? 代表0或者1
3.ATTLIST用于约束标签的属性,namespace是mapper标签的属性值,CDATA代表该属性值为字符类型,IMPLIED代表该属性非必需,REQUIRED是必需,FIXED "value"是属性是固定值value
-->
<!ELEMENT mapper (cache-ref | cache | resultMap* | parameterMap* | sql* | insert* | update* | delete* | select* )+>
<!ATTLIST mapper namespace CDATA #IMPLIED>
<!ELEMENT cache-ref EMPTY>
<!ATTLIST cache-ref namespace CDATA #REQUIRED>
<!ELEMENT cache (property*)>
<!ATTLIST cache
type CDATA #IMPLIED
eviction CDATA #IMPLIED
flushInterval CDATA #IMPLIED
size CDATA #IMPLIED
readOnly CDATA #IMPLIED
blocking CDATA #IMPLIED>
<!ELEMENT parameterMap (parameter+)?>
<!ATTLIST parameterMap
id CDATA #REQUIRED
type CDATA #REQUIRED>
<!ELEMENT select (#PCDATA | include | trim | where | set | foreach | choose | if | bind)*>
<!ATTLIST select
id CDATA #REQUIRED
parameterMap CDATA #IMPLIED
parameterType CDATA #IMPLIED
resultMap CDATA #IMPLIED
resultType CDATA #IMPLIED
resultSetType (FORWARD_ONLY | SCROLL_INSENSITIVE | SCROLL_SENSITIVE) #IMPLIED
statementType (STATEMENT|PREPARED|CALLABLE) #IMPLIED
fetchSize CDATA #IMPLIED
timeout CDATA #IMPLIED
flushCache (true|false) #IMPLIED
useCache (true|false) #IMPLIED
databaseId CDATA #IMPLIED
lang CDATA #IMPLIED
resultOrdered (true|false) #IMPLIED
resultSets CDATA #IMPLIED >
3、Schema约束:
- schema文件可以验证数据类型,文件格式为xsd
- schema中的全部标签和属性都是由schema自己定义的
- 所有的schema文件必须要有一个唯一标识符,targetNamespece
- 通过xmlns:xs=“xsd文件的targetNamespace值”,引入一个schema文件,并取别名为xs,如果要用到该schema文件中的标签,则也需要用xs作为前缀进行标识(例如:<xs:element name=“note”>)
- 如果引入的文件不是w3c组织定义的,还需要指定schema文件位置,schemaLoaction=“targetNamespace path”
- 如果引入 N 个schema文件,则需要起 N-1 个别名
- elementFormDefault="qualified"表示可以解析节点下面的内容
下面是一个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文件的note.xml文件
<?xml version="1.0"?>
<note
xmlns="http://www.w3school.com.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3school.com.cn note.xsd">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>