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(例如: 20]]>,这里面的>不必进行实体转换)
  7. 处理指令:Process Instruction(为XML添加css用)

2、DTD约束:

  1. 引入dtd文件到xml中的两种方式

格式:
例子:

格式:
例子:
  1. 下面摘取mybatis-3-mapper.dtd的部分片段进行解析


<!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作为前缀进行标识(例如:
  • 如果引入的文件不是w3c组织定义的,还需要指定schema文件位置,schemaLoaction=“targetNamespace path”
  • 如果引入 N 个schema文件,则需要起 N-1 个别名
  • elementFormDefault="qualified"表示可以解析节点下面的内容

下面是一个note.xsd文件


<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文件


<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>Georgeto>
<from>Johnfrom>
<heading>Reminderheading>
<body>Don't forget the meeting!body>
note>

你可能感兴趣的:(XML约束(DTD与Schema))