XML语言2.约束
三、XML的约束
目的:编写一个文件用来约束另一个xml文件的书写规范。
- DTD
用来约束xml的文件格式,保证这个文件是有效的。
内部DTD:所有的约束都是直接定义在xml文件中的
内部的 DOCTYPE 声明的格式:
<!DOCTYPE 根元素 [元素声明]>
声明一个元素:
<!ELEMENT 元素名称 类别>或<!ELEMENT 元素名称 (元素内容)>
类别:
空元素 <!ELEMENT 元素名称 EMPTY>
任意内容的元素 <!ELEMENT 元素名称 ANY>
元素内容:
只有 PCDATA 的元素 <!ELEMENT 元素名称 (#PCDATE)>
带有子元素(序列)的元素 <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>
声明只出现一次的元素 <!ELEMENT 元素名称 (子元素名称)>
声明最少出现一次的元素 <!ELEMENT 元素名称 (子元素名称+)>
声明出现零次或多次的元素 <!ELEMENT 元素名称 (子元素名称*)>
声明出现零次或一次的元素 <!ELEMENT 元素名称 (子元素名称?)
声明一个属性:
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
属性类型选项:
类型 描述
CDATA 值为字符数据 (character data)
(en1|en2|..) 此值是枚举列表中的一个值
ID 值为唯一的 id
IDREF 值为另外一个元素的 id
IDREFS 值为其他 id 的列表
NMTOKEN 值为合法的 XML 名称
NMTOKENS 值为合法的 XML 名称的列表
ENTITY 值是一个实体
ENTITIES 值是一个实体列表
NOTATION 此值是符号的名称
xml: 值是一个预定义的 XML 值
默认值参数:
值 解释
值 属性的默认值
#REQUIRED 属性值是必需的
#IMPLIED 属性不是必需的
#FIXED value 属性值是固定的
外部文档声明:
引用本地文件:
<!DOCTYPE 根元素 SYSTEM "文件名">
引用在线文件:
<!DOCTYPE 根元素 PUBLIC "dtd名称" "文件地址" >
2.Schema
XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。
<schema> 元素是每一个 XML Schema 的根元素。
XSD简易元素
定义简易元素:
|
<xs:element name="xxx" type="yyy"/> |
此处 xxx 指元素的名称,yyy 指元素的数据类型。XML Schema 拥有很多内建的数据类型。
常用类型有:
xs:string
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time
例如:
|
<xs:element name="lastname" type="xs:string"/> <xs:element name="age" type="xs:integer"/> <xs:element name="dateborn" type="xs:date"/> |
简易元素的默认值:
|
<xs:element name="color" type="xs:string" default="red"/> |
简易元素的固定值:
|
<xs:element name="color" type="xs:string" fixed="red"/> |
简易元素无法拥有属性。
XSD属性:
格式:
|
<xs:attribute name="xxx" type="yyy"/> |
在此处,xxx 指属性名称,yyy 则规定属性的数据类型。XML Schema 拥有很多内建的数据类型。
常用类型有:
xs:string
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time
例如:
对应的属性定义
|
<xs:element name="lastname" type="xs:string"/> <xs:attribute name="lang" type="xs:string"/> |
带有属性的xml元素:
|
<lastname lang="en">Smith<lastname> |
属性的默认值:
|
<xs:attribute name="lang" type="xs:string" default="EN"/> |
属性的固定值:
|
<xs:attribute name="lang" type="xs:string" fixed="EN"/> |
可选和必需的属性:
在缺省的情况下,属性是可选的。如需规定属性为必选,请使用 "use" 属性:
|
<xs:attribute name="lang" type="xs:string" use="required"/> |
XSD限定/Facets:
限定(restriction)用于为 XML 元素或者属性定义可接受的值。对 XML 元素的限定被称为 facet
对值的限定:
下面的例子定义了带有一个限定且名为 "age" 的元素。age 的值不能低于 0 或者高于 120:
|
<xs:element name="age">
<xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="120"/> </xs:restriction> </xs:simpleType>
</xs:element> |
数据类型的限定:
限定 描述
enumeration 定义可接受值的一个列表
fractionDigits 定义所允许的最大的小数位数。必须大于等于0。
length 定义所允许的字符或者列表项目的精确数目。必须大于或等于0。
maxExclusive 定义数值的上限。所允许的值必须小于此值。
maxInclusive 定义数值的上限。所允许的值必须小于或等于此值。
maxLength 定义所允许的字符或者列表项目的最大数目。必须大于或等于0。
minExclusive 定义数值的下限。所允许的值必需大于此值。
minInclusive 定义数值的下限。所允许的值必需大于或等于此值。
minLength 定义所允许的字符或者列表项目的最小数目。必须大于或等于0。
pattern 定义可接受的字符的精确序列。
totalDigits 定义所允许的阿拉伯数字的精确位数。必须大于0。
whiteSpace 定义空白字符(换行、回车、空格以及制表符)的处理方式。
xml复合类型指示器:
order指示器:用于定义元素顺序
- <all> 指示器规定子元素可以按照任意顺序出现,且每个子元素必须只出现一次
- <sequence> 规定子元素必须按照特定的顺序出现
- <choice> 指示器规定可出现某个子元素或者可出现另外一个子元素(非此即彼)
Occurrence指示器:Occurrence 指示器用于定义某个元素出现的频率。
- <maxOccurs> 指示器可规定某个元素可出现的最大次数
- <minOccurs> 指示器可规定某个元素能够出现的最小次数
Group指示器:Group 指示器用于定义相关的数批元素。
- 元素组通过 group 声明进行定义
- 属性组通过 attributeGroup 声明来进行定义
XML语言2.约束的更多相关文章
- xml语法、DTD约束xml、Schema约束xml、DOM解析xml
今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的ht ...
- Xml语言
一.XML是什么?作用是什么? l XML ( eXtensible Markup Language )语言是一种可扩展的标记语言.其中的可扩展是相对HTML来说的.因为XML标签没有被预定义,需要 ...
- 2.XML语言
XML语言 常见应用: XML技术除用于 /*保存有关系的数据*/之外,它还经常作软件配置文件,以描述程序模块之间的关系. 在一个系统软件中,为提高系统的灵活性,它所启动的模块通常由其配置文件决定 例 ...
- XML内部DTD约束 Day24
<?xml version="1.0" encoding="UTF-8"?> <!-- 内部DTD --> <!-- XML:ex ...
- javaweb学习总结七(XML语言作用、语法)
一:XML语言的概念以及作用 1:xml概念:extensible Markup language,可扩展行标记语言,因为html的语法比较混乱,不够严谨. 用html写的系统不好维护,所以w3c组织 ...
- XML语言1.简介和语法
一.什么是XML语言? XML 指可扩展标记语言(Extensible Markup Language) Xml是独立于软件和硬件的信息传输工具. XML 是一种很像HTML的标记语言. 但xml不是 ...
- Spring的xml配置文件中约束的必要性 找不到元素 'beans' 的声明
今天在复习Spring MVC框架的时候,只知道xml配置文件中的约束有规范书写格式的作用,所以在配置HandlerMapping对象信息的时候没有加入约束信息之后进行测试,没有遇到问题.后来在配置S ...
- 四、XML语言学习(3)
XML编程(CURD) 1.XML解析技术概述XML解析方式分为两种:DOM方式和SAX方式DOM:Document Object Model,文档对象模型.这种方式是W3C推荐的处理XML的一种方式 ...
- 四、XML语言学习(2)
XML约束之DTD 1.XML都是用户自定义标签,若出现小小的错误,软件程序将不能正确地获取文件中的内容而报错.XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档称之为约束格式良好的X ...
随机推荐
- linux 安装虚拟机
如果虚拟机创建不了就重启电脑 重启时 按下F2 出现后 第二个 往下 有个默认的 那个那个 打开虚拟机 选择第一个 然后是选择语言选择软件里面的 软件选择选择 基本网页服务器(右侧选择 python ...
- 定时任务框架Quartz-(一)Quartz入门与Demo搭建
注:本文来源于:是Guava不是瓜娃 <定时任务框架Quartz-(一)Quartz入门与Demo搭建> 一.什么是Quartz 什么是Quartz? Quartz是OpenSympho ...
- selenium+python编写自动化脚本时,定位frame中对象操作
在web应用中经常会出现frame嵌套的应用,假设页面上有A,B两个frame,其中B在A内,那么定位B中的内容则需要先到A,再到B.switchTo().frame方法可以把当前定位的主题切换到fr ...
- 《剑指offer》平衡二叉树
本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:
- Bootstrap-datepicker3官方文档中文翻译---Keyboard support/键盘支持(原文链接 http://bootstrap-datepicker.readthedocs.io/en/latest/index.html)
本日期控件包含了键盘导航. “focused date” 在键盘导航期间一直会被保持追踪并且高亮显示(就想鼠标悬停的时候一样),当一个日期被切换(译者注:选中状态的切换)时或者控件隐藏时清除. up ...
- 洛谷 P1045 & [NOIP2003普及组] 麦森数
题目链接 https://www.luogu.org/problemnew/show/P1045 题目大意 本题目的主要意思就是给定一个p,求2p-1的位数和后500位数. 解题思路 首先看一下数据范 ...
- echarts 自定义配置带单位的 tooltip 提示框方法 和 圆环数据 tooltip 过长超出屏幕
-------tip1-------- 在 tooltip 里边配置:拼接字符串: tooltip : { trigger: 'axis', formatter:function(params) { ...
- C++中的继承(2)类的默认成员
在继承关系里面, 在派生类中如果没有显示定义这六个成员函数, 编译系统则会默认合成这六个默认的成员函数. 1.构造与析构函数的调用关系 调用关系先看一段代码: class Base { public ...
- 2018-2019-2 网络对抗技术 20165328 Exp5 MSF基础应用
目录 实验要求: 基础问题回答: 离实战还缺些什么技术或步骤? 实验内容: Exp5-1 主动攻击实践:实现ms08_067(失败) 实现ms17_010_eternalblue(成功) Exp5-2 ...
- 腾讯工蜂Git关联Jenkins Hooks
现在国内外Git平台非常多,最近维护的腾讯工蜂免费公网版本git.code.tencent.com,免注册(建议使用微信登录,舒服)即可使用私有仓库.对小型团队体验还不错,如果要关联Jenkins进行 ...