XML约束(DTD与Schema)

1、xml文件:进行数据传输交互

本文主要内容参考自xml教程

  • xml(EXtensible Markup Language)的七大组成部分
  1. 文档声明:Document Declare(第一行,标明版本及字符集信息)
  2. 元素:Element(从根元素开始)
  3. 属性:Attribute(同一个元素不能有多个同名属性)
  4. 注释:Comment
  5. 实体字符:Entity Character(例如:< > & ’ " )
  6. 字符数据区:Character Data(例如:<![CDATA[select * from person where age > 20]]>,这里面的>不必进行实体转换)
  7. 处理指令:Process Instruction(为XML添加css用)

2、DTD约束:

  1. 引入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">
  1. 下面摘取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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值