实验工具: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 预定义实体




字符

实体引用

&It;

&gt;

&

&amp;

 '

&apos;

&quot;





<?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文件的有效性问题