一脚踩进java之中级篇02——xml约束之DTD

一、为什么要约束

1.1 XML都是用户自定义的标签,若出现小小的错误,软件程序将不能正确地获取文件中的内容而报错。(如:Tomcat)
1.2 XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档称之为约束。
1.3 两个概念:
  格式良好的XML:遵循XML语法的XML
  有效的XML:遵循约束文档的XML
1.4 总之:约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等等。

二、约束概述

2.1 什么是XML约束
  在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。
2.2 为什么需要XML约束
2.3 常用的约束技术
  1)XML DTD
  2)XML Schema

三、DTD约束快速入门

 在<书>标签内除了书名、作者、售价外添加其它标签,就会提示出错。

3.2 将DTD与XML文档关联三种方式

  1)DTD约束即可以作为一个单独的文件编写,也可以在XML文件内编写 

  2)使用内部DTD
    <!DOCTYPE 根节点 [ DTD的代码 ]>
  3)使用外部DTD
    <!DOCTYPE 根节点 SYSTEM “DTD的地址” >
  4)使用网络DTD
    <!DOCTYPE 根节点 PUBLIC “DTD的名称” “DTD的地址” >

扫描二维码关注公众号,回复: 10282079 查看本文章

四、DTD定义元素

4.1 在DTD文档中使用ELEMENT关键字来声明一个XML元素。
4.2 语法:<!ELEMENT 元素名称 使用规则>
  1)使用规则:
    ①(#PCDATA):指示元素的主体内容只能是普通的文本.(Parsed Character Data)
    ②EMPTY:用于指示元素的主体为空。比如<br/>
    ③ANY:用于指示元素的主体内容为任意类型。
    ④(子元素):指示元素中包含的子元素
  2)定义子元素及描述它们的关系:
    ①如果子元素用逗号分开,说明必须按照声明顺序去编写XML文档。
      如: <!ELEMENT FILE (TITLE,AUTHOR,EMAIL)
    ②如果子元素用“|”分开,说明任选其一。
      如:<!ELEMENT FILE (TITLE|AUTHOR|EMAIL)
    ③用+、*、?来表示元素出现的次数
      如果元素后面没有+*?:表示必须且只能出现一次
      +:表示至少出现一次,一次或多次
      *:表示可有可无,零次、一次或多次
      ?:表示可以有也可以无,有的话只能有一次。零次或一次
      如: <!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>

 五、属性(ATTLIST)定义

5.1 属性声明

属性声明举例
<!ATTLIST 商品
  类别 CDATA #REQUIRED 必须的
  颜色 CDATA #IMPLIED 可选的
>

对应的XML为:<商品 类别=“服装” 颜色=“黄色”/>

5.2 属性值类型:
  1)CDATA:表示属性的取值为普通的文本字符串
  2)ENUMERATED (DTD没有此关键字):表示枚举,只能从枚举列表中任选其一,如(鸡肉|牛肉|猪肉|鱼肉)
  3)ID:表示属性的取值不能重复(不能只写数字)
5.3 设置说明
  1)#REQUIRED:表示该属性必须出现
  2)#IMPLIED:表示该属性可有可无
  3)#FIXED:表示属性的取值为一个固定值。语法:#FIXED "固定值"
  4)直接值:表示属性的取值为该默认值

5.4 示例

<!ATTLIST 页面作者
  姓名 CDATA #IMPLIED
  年龄 CDATA #IMPLIED
  联系信息 CDATA #REQUIRED
  网站职务 CDATA #FIXED "页面作者"
  个人爱好 CDATA "上网"
>

六、定义引用实体

6.1 概念:在DTD中定义,在XML中使用
6.2 语法:<!ENTITY 实体名称 “实体内容”>
6.3 引用方式(注意是在XML中使用):&实体名称;

DTD中定义:
  <!ENTITY copyright “xxx版权所有”>
XML中引用:
  &copyright;

猜你喜欢

转载自www.cnblogs.com/smilehq/p/12591629.html