xml DTD约束

DTD文档可以单独一个文件,也可以在xml文档内部内部声明

内部声明例子:

<?xml version="1.0"?>
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>
<note>
  <to>George</to>
  <from>John</from>
  <heading>Reminder</heading>
  <body>Don't forget the meeting!</body>
</note>

引用DTD约束:

    两种方式,如下:

    文件在本地时:

<!DOCTYPE 文档根节点 SYSTEM "DTD文件的URL">
<!DOCTYPE 书架 SYSTEM "book.dtd">

    引用公共文件时:

<!DOCTYPE 文档根节点 PUBLIC "DTD名称" "DTD文件的URL">

元素定义:

    <! ELEMENT 元素名称 元素类型>

    元素类型可以使元素内容或类型

    如为元素内容,需要用()括起来,如:

<!ELEMENT 书架(书名,作者,售价)>
<!ELEMENT 书名(#PCDATA)>

    如为元素类型,直接书写,有如下几种类型:

    EMPTY

    ANY

元素内容中如何描述组成关系:

    逗号分隔,表示内容出现的顺序必须与生命时一致,例如:

<!ELEMENT file(title,author,email)>

    用“|”分隔,表示任选其一,例如:

<!ELEMENT file(title|author|email)>

在内容元素中可以使用+,*,?等表示元素出现的次数:

    +:表示最少出现一次 (书+)

    *:任何次数 (书*)

    ?:0或1次 (书?)

    必须一次 (书)

使用圆括号批量设置:

<!ELEMENT file((title?,author*,email)*|comment>

属性定义:

    语法格式:

<!ATTLIST 元素名
    属性名1 属性值类型 设置说明
    属性名2 属性值类型 设置说明
    ...
>

    例子如下:

<!ATTLIST 商品
    类别 CDATA #REQUIRED
    颜色 CDATA #IMPLIED
>

设置说明有如下几种:

    #REQUIRED: 必须设置该属性

    #IMPLIED: 可选

    #FIXED: 固定值,需要定义属性时提供,不可再xml中设置

    直接使用默认值: 在xml中可设置也可不设置,不设置使用默认值

    例子如下:

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

常用的属性值类型:

    CDATA:表示属性值为普通文本字符串

    ENUMERATED

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

    ENTITY

实体:

引用实体

    主要在xml文档中被应用

语法格式:

    <!ENTITY 实体名称 "实体内容">

引用方式:

    &实体名称;

例子:

<!ENTITY bookname "javaweb">
...
&bookname;

参数实体

    被DTD文件自身使用

语法格式:

    <!ENTITY % 实体名称 "实体内容">

引用方式:

    %实体名称;

例子:

<!ENTITY % TAG_NAME "name | email | address">
<!ELEMENT 个人信息 (%TAG_NAME;)>

 

 

你可能感兴趣的:(xml DTD约束)