11-09-27周二

 

DTD文档

一、DTD是一套关于标记的语法规则,它定义了文档的逻辑结构,规定了文档中所使用的元素、实体、元素的属性、元素与实体之间的关系

DTD是XML文件的验证机制,定义好DTD,就可以使用XML解析器对编写好的XML文档进行DTD检查,判断XML文档内容是否为有效的XML文档内容。

二、使用DTD的原因

验证接到的数据是否有效

验证自己的数据

定义XML文档的合法构建块

使用一系列合法元素来定义文档结构

三、DID分为内部DID和外部DID还有公用DID

1、内部DID是指在文件XML文档内部,内部DID紧跟在XML声明和处理指令之间。例如:

< ? xml version=”1.0” encoding=”GB2312” standalone=”yes” ?>

<! DOCTYPE 根元素名称 [<! ELEMENT 子元素名称 (#PDATA)>]>

2、外部DID可以方便的被多个XML文档共享,只需拟定一份DID

3、公用DID是外部DID的一种,是由某个权威机构制定的,供定行业或公司。

注意:DID文档并不是XML文档,只是为XML定义语义约束的文档。DTD必须定义XML文档中允许出现的所有元素。一旦使用DTD为其增加了语义约束,该XML文档就只能出现在DTD中定义过的元素。

四、DID文档的结构

第1行是DTD声明部分,该声明与XML声明的语法相同

0到多个注释部分,DTD注释与XML注释的语法完全相同

0到多个<!ELEMENT….>定义,每个<!ELEMENT….>定义一个XML元素

0到多个<!ATTLIST….>定义,每个<!ATTLIST….>定义一个XML元素定义了一个属性

0到多个<!ENTITY….>定义,每个<!ENTITY….>定义一个实体

0到多个<!NOTATION….>定义,每个<!NOTATION….>定义一个符号

                   XML的子元素

三种逻辑关系

有序的子元素

互斥的子元素

无序的子元素

1、有序的子元素:用英文逗号(,)作为子元素之间的分隔符,则子元素之间必须遵守所定义的顺序例如:

<计算机书籍…/>元素下面有四个元素,它们的顺序是:<书名../>,<作者…/>,<价格…、>,<简要介绍…/>

2、互斥的子元素

互斥的子元素表明一系列子元素之间只能出现其中一次。互斥子元素使用竖线(|)分隔,以竖线(|)分隔的多个元素只能出现其中之一。

3、无序的子元素

      从理论上讲,DTD没有专门为定义无序子元素提供语法,如果希望使用DTD来表示某个元素之内可以接受无序的子元素。

DID对属性的声明

<! ATTLIST 元素名 属性名 属性类型  [属性限定条件] [默认值]>

属性限定条件”和“默认值‘两部分是可选的吗,有下面几种情况

在没有指定“元素对属性的约束”时,必须为该属性指定“默认值”;

当“元素对属性的约束”是#REQUIRED时,不能为该属性指定“默认值”;必须的属性,必须为该元素提供该属性。

当“元素对属性的约束”是“IMPLIED”时,不能为该属性指定“默认值”;该属性是可有可无的

当“元素对属性的约束”是“FIXED”时,必须为该属性指定“默认值”;该属性的值是固定的定义是必须制定固定值。使用该元素时无需为其分配该属性XML处理器会自动为给属性增加固定值。

定义属性类型

字符类型

CDATA是简单的纯文本字符类型,是最常用的类型,将简单的文本用做属性值。属性值和元素内容都可以是文本类型,但是定义的方法不同例如:

<! ATTLIST  Student  name CDATA   #REQUIRED>

枚举类型

声明了属性的备选值列表,属性必须从该列表中选择一个值作为属性值。

ID、IDREF、 IDREFS类型

ID类型是一种较为严格的约束,它要求属性值必

须是有效地XML标识名,而且在整个XML文件档中

其值不能重复。

NMTOKEN和NMTOKENS类型

NMTOKEN是一个比ID类型更宽松的类型,它只要求该属性是个合法的XML标识。它也是字符串数据,但是约束比CDATA约束要严格,它要求出现的字符要少

 

 

 

  

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是用Fortran语言编写的代码: (1) ``` program week_temperature implicit none integer :: i real :: temp(7), max_temp, avg_temp ! 循环输入一周日最高气温 do i = 1, 7 write(*,*) "请输入第", i, "天的最高气温:" read(*,*) temp(i) end do ! 判断其中最高气温 max_temp = temp(1) do i = 2, 7 if (temp(i) > max_temp) then max_temp = temp(i) end if end do ! 计算一周平均最高气温 avg_temp = sum(temp) / 7 ! 输出结果 write(*,*) "一周中最高气温为:", max_temp, "℃" write(*,*) "一周平均最高气温为:", avg_temp, "℃" end program week_temperature ``` (2) ``` program month_temperature implicit none integer :: i, max_index, min_index real :: temp(28), max_temp, min_temp, avg_temp character(len=10) :: date(28) ! 使用数组输入一月日最高气温 temp = [13.0, 4.0, 8.0, 10.0, 8.0, 8.0, 9.0, 7.0, 7.0, 6.0, 9.0, 10.0, 4.0, 7.0, 9.0, 10.0, 9.0, 13.0, 11.0, 14.0, 5.0, 6.0, 5.0, 10.0, 9.0, 10.0, 12.0, 13.0] ! 计算一月平均最高气温 avg_temp = sum(temp) / 28 ! 判断其中最高、最低气温 max_temp = temp(1) min_temp = temp(1) max_index = 1 min_index = 1 do i = 2, 28 if (temp(i) > max_temp) then max_temp = temp(i) max_index = i end if if (temp(i) < min_temp) then min_temp = temp(i) min_index = i end if end do ! 输出最高、最低气温值及其在该月中的天数(第几天)、日期 date = ["2023/02/01", "2023/02/02", "2023/02/03", "2023/02/04", "2023/02/05", "2023/02/06", "2023/02/07", "2023/02/08", "2023/02/09", "2023/02/10", "2023/02/11", "2023/02/12", "2023/02/13", "2023/02/14", "2023/02/15", "2023/02/16", "2023/02/17", "2023/02/18", "2023/02/19", "2023/02/20", "2023/02/21", "2023/02/22", "2023/02/23", "2023/02/24", "2023/02/25", "2023/02/26", "2023/02/27", "2023/02/28"] write(*,*) "一月中最高气温为:", max_temp, "℃,出现在第", max_index, "天,即", date(max_index) write(*,*) "一月中最低气温为:", min_temp, "℃,出现在第", min_index, "天,即", date(min_index) end program month_temperature ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值