xml约束

1.概念:在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为xml约束。
2.常用的约束技术
1)XML DTD全称为:文档类型定义(DocumentTypeDefinition)
一。编写DTD的两种方式:
A。引用DTD约束
使用DOCTYPE声明语句来指明它所遵循的DTD文件,有两种形式:

当引用的文件在本地时,为:<!DOCTYPE 文档根结点 SYSTEM "DTD文件路径">
当引用文件是一个公共的文件时,为:<!DOCTPE 文档根结点 PUBLIC "DTD名称" "DTD文件路径">
B。在XML文件内编写DTD
案例:设计一个xml格式的文件,该文件能够表达出一个国家中的每个省及省长名称,每个省下面的每个市及市长名称,每个市下面的每个镇及镇长名称。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 国家 [
<!ELEMENT 国家 (省份+)>
<!ELEMENT 省份 (城市+)>
<!ELEMENT 城市 (乡镇+)>
<!ATTLIST 国家 NAME CDATA #REQUIRED>
<!ATTLIST 省份 NAME CDATA #REQUIRED 省长 CDATA #REQUIRED>
<!ATTLIST 城市 NAME CDATA #REQUIRED 市长 CDATA #REQUIRED>
<!ATTLIST 乡镇 NAME CDATA #REQUIRED 镇长 CDATA #REQUIRED>
]>
<国家 NAME="中国">
  <省份 NAME="河北" 省长="李">
   <城市 NAME="唐山" 市长="王">
    <乡镇 NAME="玉田 " 镇长="张"></乡镇>
    <乡镇 NAME="丰润 " 镇长="高"></乡镇>
    <乡镇 NAME="乐亭 " 镇长="陈"></乡镇>
    <乡镇 NAME="迁安 " 镇长="张"></乡镇>
   </城市>
   <城市 NAME="保定" 市长="张">
    <乡镇 NAME="高阳 " 镇长="张"></乡镇>
    <乡镇 NAME="里县 " 镇长="段"></乡镇>
    <乡镇 NAME="定洲" 镇长="张"></乡镇>
    
   </城市>
  </省份>
  <省份 NAME="河南" 省长="李">
   <城市 NAME="郑州" 市长="王">
    <乡镇 NAME="123" 镇长="张"></乡镇>
   </城市>
  </省份>
</国家>

二。DTD约束语法细节
A.元素定义
语法:<ELEMENT 元素名称 元素类型>
a.元素内容可以内容或类型
1)如为元素内容:则需要使用()括起来,如
<!ELEMENT 书架 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
2)如为元素类型,则直接书写,DTD规范定义了如下几种类型:
EMPTY:用于定义空元素,例如<br/> <hr/>
ANY:表示元素内容为任意类型。
3)元素内容中可以使用如下方式,描述内容的组成关系
i.用逗号分隔,表示内容的出现顺序必须与声明时一致。
<!ELEMENT MYFILE (TITLE,AUTHOR,EMAIL)>
ii.用|分隔,表示任选其一,即多个只能出现一个
 <!ELEMENT MYFILE (TITLE|AUTHOR|EMAIL)>
iii.在元素内容中也可以使用+、*、?等符号表示元素出现的次数:
  +: 一次或多次 (书+)
   ?: 0次或一次 (书?)
   *: 0次或多次  (书*)
iv.也可使用圆括号( )批量设置,例
 <!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>
B.属性定义
a.xml文档中的标签属性需通过ATTLIST为其设置属性
b.语法格式:
 <!ATTLIST 元素名
  属性名1 属性值类型 设置说明
  属性名2 属性值类型 设置说明
  ……
 >
i.设置说明:
#REQUIRED:必须设置该属性
#IMPLIED:可以设置也可以不设置
#FIXED:说明该属性的取值固定为一个值,在 XML 文件中不能为该属性设置其它值。但需要为该属性提供这个值
直接使用默认值:在 XML 中可以设置该值也可以不设置该属性值。若没设置则使用默认值。 
ii.常用属性值类型
CDATA:表示属性值为普通文本字符串。
ENUMERATED: 属性的类型可以是一组取值的列表,在 XML 文件中设置的属性值只能是这个列表中的某个值(枚举)

ID:表示属性的设置值为一个唯一值。
ID 属性的值只能由字母,下划线开始,不能出现空白字符

C.实体定义
a.实体可分为两种类型:引用实体和参数实体。
i.引用实体:
语法:<!ENTITY 实体名称 "实体内容">
引用方式:&实体名称;
ii.参数实体:参数实体被 DTD 文件自身使用
语法格式:
   <!ENTITY % 实体名称 "实体内容" >
引用方式:
%实体名称;

2)XML Schema
A.概念:XML Schema 也是一种用于定义

和描述 XML 文档结构与内容的模式语言

,其出现是为了克服 DTD 的局限性。
i.XML Schema 文件自身就是一个XML文件

,但它的扩展名通常为.xsd。
ii.一个XML Schema文档通常称之为模式

文档(约束文档),遵循这个文档书写的

xml文件称之为实例文档。
iii.和XML文件一样,一个XML Schema文

档也必须有一个根结点,但这个根结点的

名称为Schema。
iv.编写了一个XML Schema约束文档后,

通常需要把这个文件中声明的元素绑定到

一个URI地址上,在XML Schema技术中

有一个专业术语来描述这个过程,即把

XML Schema文档声明的元素绑定到一个名

称空间上,以后XML文件就可以通过这个

URI(即名称空间)来告诉解析引擎,xml

文档中编写的元素来自哪里,被谁约束。
B.名称空间的概念
在XML Schema中,每个约束模式文档都可

以被赋以一个唯一的名称空间,名称空间

用一个唯一的URI(Uniform Resource

Identifier,统一资源标识符)表示。

在Xml文件中书写标签时,可以通过名称

空间声明(xmlns),来声明当前编写的

标签来自哪个Schema约束文档。
C.使用名称空间引入Schema
为了在一个XML文档中声明它所遵循的

Schema文件的具体位置,通常需要在Xml

文档中的根结点中使用schemaLocation属

性来指定,例如:
 <itcast:书架

xmlns:itcast="http://www.itcast.cn"
  

xmlns:xsi="http://www.w3.org/2001/XM

LSchema-instance"
  xsi:schemaLocation=

“http://www.itcast.cn book.xsd">
 schemaLocation此属性有两个值。第一

个值是需要使用的命名空间。第二个值是

供命名空间使用的 XML schema 的位置,

两者之间用空格分隔。
基本格式:
 xmlns="URI" 
举例:
 <书架

xmlns="http://www.it315.org/xmlbook/

schema"
  

xmlns:xsi="http://www.w3.org/2001/XM

LSchema-instance"
  xsi:schemaLocation=

“http://www.itcast.cn book.xsd">
  <书>
  <书名>JavaScript网页

开发</书名>
  <作者>redarmy</作者>
  <售价>28.00元</售价>
  </书>
 <书架>
D.使用默认名称空间
基本格式:
 xmlns="URI" 
举例:
 <书架

xmlns="http://www.it315.org/xmlbook/

schema"
  

xmlns:xsi="http://www.w3.org/2001/XM

LSchema-instance"
  xsi:schemaLocation=

“http://www.itcast.cn book.xsd">
  <书>
  <书名>JavaScript网页

开发</书名>
  <作者>redarmy</作者>
  <售价>28.00元</售价>
  </书>
 <书架>


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值