XMLDTD与Schema约束..doc
文本预览下载声明
XML DTD与Schema约束
一、【引言】
??? Xml即Extensible Markup Language可扩展标记语言。它是由SGML(Standard Gerneralized Markup language)发展而来的,允许开发者自定标签,可以将标签和内容有效的分离。在XML技术里,可以编写一个文档来约束XML文档的书写规范,称之为XML约束。
二、【DTD (Document Type Definition)】
DTD是一种比较早起的xml约束方式,在表达属性值和元素内容的类型约束上存在很多缺陷1、DTD的两种约束方式DTD约束即可以作为一个单独的文件编写,也可以在XML文件内编写。(1)、在xml文件内编写DTD
?xml?version=1.0?encoding=UTF-8?standalone=yes???
!DOCTYPE?书架?[???!ELEMENT?书架?(书+)??
?!ELEMENT?书?(书名,作者,售价)??
?!ELEMENT?书名?(#PCDATA)??
?!ELEMENT?作者?(#PCDATA)??
?!ELEMENT?售价?(#PCDATA)??]??
书架??
?书??
??书名Java就业培训教程/书名??
??作者张孝祥/作者??
??售价39.00元/售价??
?/书??
/书架??
(2)、引用DTD约束XML文件使用 DOCTYPE 声明语句来指明它所遵循的DTD文件,DOCTYPE声明语句有两种形式:
A、当引用的文件在本地时,采用如下方式:
!DOCTYPE?文档根结点?SYSTEM?DTD文件的URL??
??例如:?!DOCTYPE?书架?SYSTEM?“book.dtd”??
B、当引用的文件是一个公共的文件时,采用如下方式:
!DOCTYPE?文档根结点?PUBLIC?DTD名称?DTD文件的URL??例如:??
!DOCTYPE?web-app?PUBLIC??-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN??????/dtd/web-app_2_3.dtd??
??2、DTD约束语法细节:(1)、 DTD的语法细节:元素定义1在DTD文档中使用ELEMENT声明一个XML元素,语法格式如下所示:
!ELEMENT?元素名称元素类型??元素类型可以是元素内容、或类型??
如为元素内容:则需要使用()括起来,如??
!ELEMENT?书架?(书名,作者,售价)??
!ELEMENT?书名?(#PCDATA)??
如为元素类型,则直接书写,DTD规范定义了如下几种类型:EMPTY:用于定义空元素,例如br/ hr/ANY:表示元素内容为任意类型。(2)、 DTD的语法细节:元素定义2元素内容中可以使用如下方式,描述内容的组成关系用逗号分隔,表示内容的出现顺序必须与声明时一致。!ELEMENT MYFILE (TITLE,AUTHOR,EMAIL)?用|分隔,表示任选其一,即多个只能出现一个!ELEMENT MYFILE (TITLE|AUTHOR|EMAIL)在元素内容中也可以使用+、*、?等符号表示元素出现的次数:?? ?+: 一次或多次 (书+)?? ??: 0次或一次 (书?)?? ?*: 0次或多次? (书*)也可使用圆括号( )批量设置,例?!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)(3)、属性定义xml文档中的标签属性需通过ATTLIST为其设置属性语法格式:
!ATTLIST?元素名??属性名1?属性值类型?设置说明??
????属性名2?属性值类型?设置说明??
???……????
属性声明举例:??
!ATTLIST?商品???类别?CDATA?#REQUIRED??
????颜色?CDATA?#IMPLIED????
对应XML文件:
商品?类别=服装?颜色=黄色…/商品??
????商品类别=服装…/商品??
设置说明:#REQUIRED:必须设置该属性#IMPLIED:可以设置也可以不设置#FIXED:说明该属性的取值固定为一个值,在 XML 文件中不能为该属性设置其它值。但需要为该属性提供这个值直接使用默认值:在 XML 中可以设置该值也可以不设置该属性值。若没设置则使用默认值。?举例:
!ATTLIST?页面作者??
????姓名?CDATA?#IMPLIED??
????年龄?CDATA?#IMPLIED??
????联系信息?CDATA?#REQUIRED??
????网站职务?CDATA?#FIXED?页面作者??
????个人爱好?CDATA?上
显示全部