XML DTD约束

      为了方便数据交换,需要明确元素与元素之间、元素与属性之间的关系以及属性的取值范围。

      常用的约束技术:XML DTD(Document Type Definition【文档类型定义】)(易学,功能有限)

                                   XML Schema(难学,功能强大)

 

      DTD  声明有两种:

            一种是声明在外部文件中,一种是直接在文档中给出DTD

           直接给出DTD   ——>   <!DOCTYPE 根元素 [元素声明]>

 带有 DTD 的 XML 文档实例

<?xml version="1.0"?>
<!DOCTYPE 书架 [
<!ELEMENT 书架 (书)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
]>
<书架>
<书>

<书名>西游记</书名>

<作者>吴承恩</作者>

<售价>45</售价>

</书>

</书架>
以上 DTD 解释如下:
!DOCTYPE 书架 (第二行)定义此文档是 书架 类型的文档。
!ELEMENT 书 (第四行)定义 书 元素有三个元素:"书名,作者,售价"    //这些元素是有顺序的,后边定义时必须按照此处给定的顺序。
!ELEMENT 书名 (第五行)定义 书名 元素为 "#PCDATA"【字符型】 类型
!ELEMENT 作者 (第六行)定义 作者 元素为 "#PCDATA" 类型
!ELEMENT 售价 (第七行)定义 售价 元素为 "#PCDATA" 类型
ELEMENT(元素)
外部声明是创建一个扩展名为.dtd的单独的文档,在每个需要符合此约束的XML文件中引用这个文档。
 
如果DTD比较简单  建议写在内部,如果比较复杂又有多处引用此约束,就写在外部。
 
当外部文件在本地时,采用如下方式:
       <!DOCTYPE 书架 SYSTEM "book.dtd">
当外部文件是一个公共文件时,采用下边的方式:
      <!DOCTYPE 文档根节点 PUBLIC "DTD名称" "DTD文件的URL">
 
      语法细节:
             利用括号、逗号、竖线、星号、加号和问号的组合可以说明很复杂的内容模型。
--用逗号分隔,表示出现的顺序必须与声明时一致。
--用|分隔,表示任选其一,即多个只能出现一个。
--用 +、*、?表示元素出现的次数
   +     一次或者多次,例   (书+)
   ?    0次或1次     ,        (书?)
   *    0次或多次 ,            (书*)      或者  (书)   有且只有一次

      属性定义:ATTLIST

             #REQUIRED:必须设置该属性值

             #IMPLIED: 可以设置也可以不设置

             #FIXED:     说明该属性取值为一个固定值,在XML文件中无需定义,此处会提供一个默认值。

             直接使用默认值:在XML中可以设置该值也可以不设置,如果不设置,会直接使用提供的默认值。

     实体的定义:相当于定义变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值