上部_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) |