上部_DTD参数实体和Schema数据类型――圣思园张龙 编辑:玄玉
DTD参数实体 | 数据类型 |
实体引用 | 基本数据类型 |
为何要Schema | 扩展数据类型 |
文档结构 | 数据类型的特性 |
DTD参数实体
该实体不在具体实例化文档中使用,而是在DTD文档内部被使用
比如我们定义这样的一个实体:<!ENTITY %地址 "街道,城市,邮编,国家">
然后可以在DTD内部通过"%地址;"来引用它:<!ELEMENT 联系(人名,电话,%地址;)>
这就是参数实体的概念
类型 | 普通实体 | 参数实体 | |
使用场合 | 用在XML文档中 | 只用在DTD中元素和属性的声明中 | |
声明 方式 |
内部 | <!ENTITY 实体名 "文本内容"> | <!ENTITY %实体名 "文本内容"> |
外部 | <!ENTITY 实体名 SYSTEM "外部文件URL地址"> | <!ENTITY %实体名 SYSTEM "外部文件URL地址"> | |
引用方式 | &实体名; | %实体名; |
实体引用
实际上XML已经内置了5个实体,也就是我们常说的实体引用
这是为了避免把字符数据和标签中需要用到的一些特殊符号相混淆,于是XML提供了实体引用
字符
|
实体引用 |
---|---|
&
|
& |
>
|
> |
<
|
< |
“
|
" |
’
|
' |
为何要Schema
DTD的局限性
1)DTD不遵守XML语法(写XML文档实例时用一种语法,写DTD时用另外一种语法)
2)DTD数据类型有限(与数据库数据类型不一致)
3)DTD不可扩展
Schema的新特性
1)Schema基于XML语法
2)Schema可以用能处理XML闻到那股的工具处理
3)Schema大大扩充了数据类型,可以自定义数据类型
4)Schema支持元素的继承――Object-Oriented
5)Schema支持属性组
Schema的文档结构
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://mynamespace/mychema"> <!-- 放入实际内容 --> </xs:schema>1)<xs:schema:表示所有Schema文档使用schema作为其根元素
2)xmlns:xs:表示用于构造schema的元素和数据类型来自http://www.w3.org/2001/XMLSchema命名空间
3)targetNamespace:表示本schema定义的元素和数据类型属于http://mynamespace/mychema命名空间
Schema的数据类型
简单类型
1、内置的数据类型(built-in data types)
1)基本的数据类型
2)扩展的数据类型
2、用户自定义数据类型(通过simpleType定义)
复杂类型(通过complexType定义,在WebServices中经常会用到它,属于必用)
基本数据类型
基本数据类型 | 描述 |
---|---|
string | 表示字符串 |
boolean | 布尔型 |
decimal | 代表特定精度的数字 |
float | 表示单精度32位浮点数 |
double | 表示双精度64位浮点数 |
duration | 表示持续时间 |
dateTime | 代表特定的时间 |
time | 代表特定的时间,但是是每天重复的 |
date | 代表日期 |
hexBinary | 表示十六进制数 |
anyURI | 表示一个URI,用来定位文件 |
NOTATION | 代表NOTATION类型 |
扩展数据类型
扩展数据类型 | 描述 |
---|---|
ID | 用于唯一标识元素 |
IDREF | 参考ID类型的元素或属性 |
ENTITY | 实体类型 |
NMTOKEN | NMTOKEN类型 |
NMTOKENS | NMTOKEN类型集 |
long | 表示整型数,大小介于-9223372036854775808和9223372036854775807之间 |
int | 表示整型数,大小介于-2147483648和2147483647之间 |
short | 表示整型数,大小介于-32768和32767之间 |
byte | 表示整型数,大小介于-128和127之间 |
数据类型的特性
数据类型的特性 | 描述 |
---|---|
enumeration | 在指定的数据集中选择,限定用户的选值 |
totalDigits | 精确指定数字个数 |
fractionDigits | 限定最大的小数位,用于控制精度(必须大于或等于零) |
length | 指定数据的长度,即精确指定允许的最大字符长度 |
maxLength | 指定允许的最大字符长度 |
minLength | 指定允许的最小字符长度 |
maxExclusive | 指定数据的最大值(小于) |
maxInclusive | 指定数据的最大值(小于等于) |
minExclusive | 指定最小值(大于) |
minInclusive | 指定最小值(大于等于) |
Pattern | 指定数据的显示规范,即指定允许值的模式,类似正则表达式 |
whiteSpace | 处理空白(保留:preserve,替换:replace,合并:collapse) |