三、XML的约束

目的:编写一个文件用来约束另一个xml文件的书写规范。

  1. 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指示器:用于定义元素顺序

  1. <all> 指示器规定子元素可以按照任意顺序出现,且每个子元素必须只出现一次
  2. <sequence> 规定子元素必须按照特定的顺序出现
  3. <choice> 指示器规定可出现某个子元素或者可出现另外一个子元素(非此即彼)

Occurrence指示器:Occurrence 指示器用于定义某个元素出现的频率。

  1. <maxOccurs> 指示器可规定某个元素可出现的最大次数
  2. <minOccurs> 指示器可规定某个元素能够出现的最小次数

Group指示器:Group 指示器用于定义相关的数批元素。

  1. 元素组通过 group 声明进行定义
  2. 属性组通过 attributeGroup 声明来进行定义

XML语言2.约束的更多相关文章

  1. 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 ...

  2. Xml语言

    一.XML是什么?作用是什么? l  XML ( eXtensible Markup Language )语言是一种可扩展的标记语言.其中的可扩展是相对HTML来说的.因为XML标签没有被预定义,需要 ...

  3. 2.XML语言

    XML语言 常见应用: XML技术除用于 /*保存有关系的数据*/之外,它还经常作软件配置文件,以描述程序模块之间的关系. 在一个系统软件中,为提高系统的灵活性,它所启动的模块通常由其配置文件决定 例 ...

  4. XML内部DTD约束 Day24

    <?xml version="1.0" encoding="UTF-8"?> <!-- 内部DTD --> <!-- XML:ex ...

  5. javaweb学习总结七(XML语言作用、语法)

    一:XML语言的概念以及作用 1:xml概念:extensible Markup language,可扩展行标记语言,因为html的语法比较混乱,不够严谨. 用html写的系统不好维护,所以w3c组织 ...

  6. XML语言1.简介和语法

    一.什么是XML语言? XML 指可扩展标记语言(Extensible Markup Language) Xml是独立于软件和硬件的信息传输工具. XML 是一种很像HTML的标记语言. 但xml不是 ...

  7. Spring的xml配置文件中约束的必要性 找不到元素 'beans' 的声明

    今天在复习Spring MVC框架的时候,只知道xml配置文件中的约束有规范书写格式的作用,所以在配置HandlerMapping对象信息的时候没有加入约束信息之后进行测试,没有遇到问题.后来在配置S ...

  8. 四、XML语言学习(3)

    XML编程(CURD) 1.XML解析技术概述XML解析方式分为两种:DOM方式和SAX方式DOM:Document Object Model,文档对象模型.这种方式是W3C推荐的处理XML的一种方式 ...

  9. 四、XML语言学习(2)

    XML约束之DTD 1.XML都是用户自定义标签,若出现小小的错误,软件程序将不能正确地获取文件中的内容而报错.XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档称之为约束格式良好的X ...

随机推荐

  1. C#使用RabbitMQ(转)

      1. 说明 在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统时,这种分布式的调用与通信变得越发重要.其次,系统中一般会有很多对实时性要求不高的但是执行起来比较较耗时的地 ...

  2. zabbix3.2利用自动发现功能对fastcgi模式的php状态进行集中监控

    zabbix3.2利用自动发现功能对fastcgi模式的php状态进行集中监控 前端nginx虚拟主机引用后端多个php接口,为了方便监控,将后端服务器集中配置在nginx中,具体配置如下: [roo ...

  3. Cyclone IV FPGA 器件笔记

    LE(逻辑单元)操作模式 1) 正常模式 2)算术模式 可以看到对于Cy4来说正常模式和算术模式的区别就是正常模式有一个4输入LUT没有cout进位输出,而算术模式有两个3输入LUT有cout进位输出 ...

  4. 04-HTTP协议和静态Web服务器

    一.HTTP协议(HyperText Transfer Protocol)     超文本传输协议,超文本是超级文本的缩写,是指超越文本限制或者超链接,比如:图片.音乐.视频.超链接等等都属于超文本. ...

  5. 末学者笔记--shell编程上 1 玄

    Shell 编程 [内容简列]: 1.shell简介 2. shell分类 3. 查看shell 4. 第一个shell脚本 5. shell编程常用命令 5.1 grep 5.2 cut 5.3 s ...

  6. 2018-2019-2 网络对抗技术 20165328 Exp4 恶意代码分析

    实验内容: 系统运行监控(2分) 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里.运行一段时间并分析该文件,综述一下分析结果.目标就是找出所有连网的程序,连了哪里,大约 ...

  7. linux su失败:无法设置用户ID:资源暂时不可用

    环境 linux RHEP 7.+ su - user 提示 :无法设置用户ID,资源暂时不可用 检查 cat /etc/security/limits.d/90-nproc.conf * soft ...

  8. Outlook IMAP 修改PST文件存储路径

    IMAP类型的账户修改PST文件位置方法: 对于IMAP类型账户的PST文件,既没有“修改文件夹”的选项,也无法按OFFICE官方操作指南中的操作.因为每次Outlook只要检测到默认路径下的PST文 ...

  9. 《ServerSuperIO Designer IDE使用教程》- 6.增加与阿里云物联网(IOT)对接服务,实现数据交互。发布:v4.2.4 版本

    v4.2.4 更新内容:1.增加了对接阿里物联网平台的服务.下载地址:官方下载   6. 增加与阿里云物联网(IOT)对接服务,实现数据交互  6.1    概述 为了满足业务系统数据上云的要求,Se ...

  10. 关于Hbase开启snappy压缩

    版本:自己编译的hbase-1.2.0-cdh5.14.0 默认情况下,Hbase不开启snappy压缩 , 所以在hbase的lib/native目录下什么也没有(我的前提是执行hadoop che ...