实验工具:xmlspy2013、firefox;
实验问题:
1.分析下列XML实例,编写DTD文档,并进行验证。 <?xml version=”1.0” encoding=”GB2312”> <学生名册> <学生 学号="A"> <姓名>张三</姓名> <性别>男</性别> <年龄>20</年龄> </学生> <学生 学号="A2"> <姓名>李四</姓名> <性别>女</性别> <年龄>19</年龄> </学生> <学生 学号="A3"> <姓名>王二</姓名> <性别>男</性别> <年龄>21</年龄> </学生> </学生名册> 2.分析下列DTD文档,上机编写有效的XML文档,并进行验证。 <!DOCTYPE NEWSPAPER[ <!ELEMENT NEWSPAPER (ARTICLE+)> <!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)> <!ELEMENT HEADLINE (#PCDATA)> <!ELEMENT BYLINE (#PCDATA)> <!ELEMENT LEAD (#PCDATA)> <!ELEMENT BODY (#PCDATA)> <!ELEMENT NOTES (#PCDATA)> <!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED> <!ATTLIST ARTICLE EDITOR CDATA #IMPLIED> <!ATTLIST ARTICLE DATE CDATA #IMPLIED> <!ATTLIST ARTICLE EDITION CDATA #IMPLIED> <!ENTITY NEWSPAPER "Vrevet Logic Times"> <!ENTITY PUBLISHRE "Vervet Logic Press"> <!ENTITY COPYRIGHT "Copyright 1998 Vervet Logic Press"> ]>
|
1.理解XML文档有效性的涵义; DTD是一种保证XML文档格式正确的有效方法,可以通过比较XML文档来查看文档是否符合规范,元素和标签的使用是否正确。 2.熟悉DTD元素与属性声明的基本语法; a) !ELEMENT表示开始元素设置 b) element-name指明设置此元素的名称 c) element-definition:指明对此元素进行怎样的定义 1、ANY元素类型 <!ELEMENT 元素名 ANY>:将根元素设为ANY类型后,元素出现的次序和顺序将不受限制。 2、EMPTY元素类型 <!ELEMENT 元素名 EMPTY>:使用空元素标记,既不能有内容,也不能有子元素 3、#PCDATA类型的元素(纯文本元素) <!ELEMENT 元素名(#PCDATA)>:PCDATA代表字符数据,为防止与关键字混淆,加#前缀。 4、父元素类型 只包含子元素,并且除了这些子元素外没有文本。这类元素中可以包含子元素,在DTD中通过正则表达式规定子元素出现的顺序和次数。 5、混合元素类型 <!ELEMENT 元素名(#PCDATA|子元素名1|子元素名2|……|子元素名n)*>:指包含子元素和文本数据的混合体。 3.理解DTD实体声明的基本语法; <!DOCTYPE 文件名[ <!ELEMENT 实体名 “实体内容”> ]> 4.掌握XML的五种常用实体的用法; 表1-1 预定义实体
|
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE 学生名册 [
<!ELEMENT 学生名册 (学生+)>
<!ELEMENT 学生 (姓名, 性别, 年龄)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT 性别 (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
<!ATTLIST 学生 学号 (A | A2 | A3) #REQUIRED>
]>
<学生名册>
<学生 学号="A">
<姓名>张三</姓名>
<性别>男</性别>
<年龄>20</年龄>
</学生>
<学生 学号="A2">
<姓名>李四</姓名>
<性别>女</性别>
<年龄>19</年龄>
</学生>
<学生 学号="A3">
<姓名>王二</姓名>
<性别>男</性别>
<年龄>21</年龄>
</学生>
</学生名册>
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE NEWSPAPER[
<!ELEMENT NEWSPAPER (ARTICLE+)>
<!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)>
<!ELEMENT HEADLINE (#PCDATA)>
<!ELEMENT BYLINE (#PCDATA)>
<!ELEMENT LEAD (#PCDATA)>
<!ELEMENT BODY (#PCDATA)>
<!ELEMENT NOTES (#PCDATA)>
<!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED>
<!ATTLIST ARTICLE EDITOR CDATA #IMPLIED>
<!ATTLIST ARTICLE DATE CDATA #IMPLIED>
<!ATTLIST ARTICLE EDITION CDATA #IMPLIED>
<!ENTITY NEWSPAPER "Vrevet Logic Times">
<!ENTITY PUBLISHRE "Vervet Logic Press">
<!ENTITY COPYRIGHT "Copyright 1998 Vervet Logic Press">
]>
<NEWSPAPER>
<ARTICLE AUTHOR="必须写" EDITOR="可有可无" DATE="可有可无" EDITION="可有可无">
<HEADLINE>123</HEADLINE>
<BYLINE>123</BYLINE>
<LEAD>123</LEAD>
<BODY>123</BODY>
<NOTES>©RIGHT;</NOTES>
</ARTICLE>
<ARTICLE AUTHOR="pshd1" EDITOR="可有可无" DATE="2017-10-11" EDITION="1.0">
<HEADLINE>xml实验四</HEADLINE>
<BYLINE>123</BYLINE>
<LEAD>前言1</LEAD>
<BODY>hello</BODY>
<NOTES>&PUBLISHRE;</NOTES>
</ARTICLE>
<ARTICLE AUTHOR="pshd2" EDITOR="可有可无" DATE="2017-10-12" EDITION="1.0">
<HEADLINE>world</HEADLINE>
<BYLINE>123</BYLINE>
<LEAD>123</LEAD>
<BODY>123</BODY>
<NOTES>&NEWSPAPER;</NOTES>
</ARTICLE>
</NEWSPAPER>
注意问题:
xml文件--->DTD/schema文件的自动转换问题
DTD/schema文件-->xml文件的自动转换问题
xml文件和DTD内定义和外部引入问题
实体自定义和xml文件联系DTD文件的有效性问题