一、实验目的:

1、掌握XML文档的基本语法。

2、通过本实验,使学生能够了解并掌握XML Schema的定义方法及其用途。

3、掌握使用XSL显示XML文档的基本方法。

4、熟悉XML spy2011的开发环境。

二、基本原理:XML、XML Schema及XSL

三、实验环境:微机;XML spy2011

四、实验类型:验证型

五、实验内容与原代码

1、能参照示例XML文件进行对应的XML Schema定义。

2、能利用Schema对XML文件进行验证,具体步骤如下:

(1)对以下“EXxml.xml”进行Schema定义(设Schema文件名为“EXxsd.xsd”),原代码如下:

<?xml version="1.0" encoding="UTF-8"?>

<Booklist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<Book>

<BookID>000001</BookID>

<BookType>计算机</BookType>

<BookName>算法与数据结构</BookName>

<Auth>严蔚敏 陈文博</Auth>

<Publisher>清华大学出版社</Publisher>

<Price>24</Price>

<PubDate>2002-1-1</PubDate>

<Quantity>10</Quantity>

</Book>

<Book>

<BookID>000002</BookID>

<BookType>计算机</BookType>

<BookName>软件工程导论</BookName>

<Auth>张海藩</Auth>

<Publisher>清华大学出版社</Publisher>

<Price>54</Price>

<PubDate>1987-6-1</PubDate>

<Quantity>5</Quantity>

</Book>

<Book>

<BookID>000003</BookID>

<BookType>计算机</BookType>

<BookName>XML/JSP网页编程教材</BookName>

<Auth>吴艾</Auth>

<Publisher>北京希望电子出版社</Publisher>

<Price>46</Price>

<PubDate>2001-7-1</PubDate>

<Quantity>15</Quantity>

</Book>

<Book>

<BookID>000012</BookID>

<BookType>工具</BookType>

<BookName>汉语成语字典</BookName>

<Auth>李一华 吕德申</Auth>

<Publisher>四川辞书出版社</Publisher>

<Price>12</Price>

<PubDate>1992-1-1</PubDate>

<Quantity>10</Quantity>

</Book>

<Book>

<BookID>000016</BookID>

<BookType>机械</BookType>

<BookName>机电控制工程</BookName>

<Auth>高钟毓 王永梁</Auth>

<Publisher>清华大学出版社</Publisher>

<Price>19.8</Price>

<PubDate>1994-9-1</PubDate>

<Quantity>19</Quantity>

</Book>

<Book>

<BookID>000018</BookID>

<BookType>工具</BookType>

<BookName>英华大字典</BookName>

<Auth>郑易里</Auth>

<Publisher>商务印书馆</Publisher>

<Price>18.5</Price>

<PubDate>1984-11-1</PubDate>

<Quantity>2</Quantity>

</Book>

</Booklist>

(2)Schema定义

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="Booklist" type="Booklistdata"/>

<xs:complexType name="Booklistdata">

<xs:sequence>

<xs:element name="Book" type="Bookdata" minOccurs="0" maxOccurs="unbounded"/>

</xs:sequence>

</xs:complexType>

<xs:complexType name="Bookdata">

<xs:sequence>

<xs:element name="BookID" type="xs:string"/>

<xs:element name="BookType" type="xs:string"/>

<xs:element name="BookName" type="xs:string"/>

<xs:element name="Auth" type="xs:string"/>

<xs:element name="Publisher" type="xs:string"/>

<xs:element name="Price" type="xs:string"/>

<xs:element name="PubDate" type="xs:string"/>

<xs:element name="Quantity" type="xs:string"/>

</xs:sequence>

</xs:complexType>

</xs:schema>

(3)对以上“EXxml.xml”进行XSL定义,使XML文件内容能够以Web网页的形式显示。(设XSL文件名为“EXxsl.xsl”)

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">

<xsl:template match="/">

<xsl:for-each select="Booklist/Book">

<html>

<head><title>图书目录信息</title></head>

<body>

<table border="20">

<tr>

<th width="10%">图书ID</th>

<td><xsl:value-of select="BookID"/></td>

</tr>

<tr>

<th width="10%">图书类型</th>

<td><xsl:value-of select="BookType"/></td>

</tr>

<tr>

<th width="10%">书名</th>

<td><xsl:value-of select="BookName"/></td>

</tr>

<tr>

<th width="10%">作者</th>

<td><xsl:value-of select="Auth"/></td>

</tr>

<tr>

<th width="10%">出版社</th>

<td><xsl:value-of select="Publisher"/></td>

</tr>

<tr>

<th width="10%">价格</th>

<td><xsl:value-of select="Price"/></td>

</tr>

<tr>

<th width="10%">出版日期</th>

<td><xsl:value-of select="PubDate"/></td>

</tr>

<tr>

<th width="10%">数量</th>

<td><xsl:value-of select="Quantity"/></td>

</tr>

</table>

</body>

</html>

</xsl:for-each>

</xsl:template>

</xsl:stylesheet>

显示结果,如下图5.2.1所示:

图5.2.1 原代码运行结果(仅展示部分表格内容)

六、实验过程与更改后代码:

1、在不改变以上“EXxml.xml”中的原代码所呈现内容的基础上,为使代码正常运行,需在XML版本号和传输数据的字符编码方式的声明代码“<?xml version="1.0" encoding="UTF-8"?>”后添加与修改部分代码,具体更改代码如下:

<?xml-stylesheet type='text/xsl' href='D:\BOGE CODE\EXxsl.xsl' ?>

<Booklist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:///D:/BOGE%20CODE/EXxsd.xsd">

其中,“xmlns”是为定义一个默认命名空间,即在之后使用的元素,所有没有前缀的皆是默认命名空间中的元素。那么,xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"就是在命名空间下创建一个“xsi”前缀,该前缀的唯一标识是"http://www.w3.org/2001/XMLSchema-instance",xsi 已经成为了一个业界默认的用于 XSD(XML Schema Definition) 文件的命名空间。“Xmlns”是命名空间,而“xsi”全称是“XML Schema Instance”的缩写,即XML Shema实例。

现在定义了一个 XML Schema Instance ,接下来就是为XML Schema Instance 提供使用的 XML Schema 地址( schemaLocation),即 xsd 文件全路径,这样 XML 解析器在解析时,会自动到这个路径下下载 xsd 文件,然后根据这个文件去解析 XML 文档的结构是否有误。但是在此处所使用的不是“xsi:schemaLocation”,本实验是直接在“Altova XMLSpy 2013”软件下的窗口中的菜单栏里的“DTD/模式”下点击“指定模式”直接生成“xsi:noNamespaceSchemaLocation”。

随后,关于处理指令,简称PI(processing instruction),它用来指挥解析引擎如何解析XML文档内容。在本实验的XML文档中使用了“xml-stylesheet”指令,通知XML解析引擎,应用XSL文件显示XML文档内容。其中,“href”是用于指定超链接目录的URL。

1、文件“EXxsd.xsd”中“Schema”定义代码不作任何改变,我将于“EXxsl.xsl”文件中对部分代码进行修改,以改变Web网页的内容显示,具体整体代码如下:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">

<xsl:template match="/">

<xsl:for-each select="Booklist/Book">

<html>

<head><title>图书目录信息</title></head>

<body background="manyxiaoxin.jpg"

style="background-repeat:no-repeat

background-attachment:fixed;

background-size:100% 100%; ">

<table background='07724e2aab97aa2dcaebbcfa390e4404.gif' border="10" align="center">

<tr bgcolor="#3D7878">

<th width="15%" style="font-size: 20px; font-family: 华文新魏; font-weight: 500;">

图书

</th>

<td><xsl:value-of select="BookID"/></td>

</tr>

<tr bgcolor="#408080">

<th width="15%" style="font-size: 20px; font-family: 华文新魏; font-weight: 500;">

图书类型

</th>

<td><xsl:value-of select="BookType"/></td>

</tr>

<tr bgcolor="#4F9D9D">

<th width="15%" style="font-size: 20px; font-family: 华文新魏; font-weight: 500;">

书名

</th>

<td><xsl:value-of select="BookName"/></td>

</tr>

<tr bgcolor="#5CADAD">

<th width="15%" style="font-size: 20px; font-family: 华文新魏; font-weight: 500;">

作者

</th>

<td><xsl:value-of select="Auth"/></td>

</tr>

<tr bgcolor="#6FB7B7">

<th width="15%" style="font-size: 20px; font-family: 华文新魏; font-weight: 500;">

出版社

</th>

<td><xsl:value-of select="Publisher"/></td>

</tr>

<tr bgcolor="#81C0C0">

<th width="15%" style="font-size: 20px; font-family: 华文新魏; font-weight: 500;">

价格

</th>

<td><xsl:value-of select="Price"/></td>

</tr>

<tr bgcolor="#95CACA">

<th width="15%" style="font-size: 20px; font-family: 华文新魏; font-weight: 500;">

出版日期

</th>

<td><xsl:value-of select="PubDate"/></td>

</tr>

<tr bgcolor="#A3D1D1">

<th width="15%" style="font-size: 20px; font-family: 华文新魏; font-weight: 500;">

数量

</th>

<td><xsl:value-of select="Quantity"/></td>

</tr>

</table>

</body>

</html>

</xsl:for-each>

</xsl:template>

</xsl:stylesheet>

在该修改过后的代码中,在“body”体部加入了“background”和“style”等标签,用于添加背景图片,并对背景图片的属性进行调整(所采用的背景原图如图6.2.1)。随后,在“table”表格中增加了“background”、“border”和“align”标签,依次分别设置表格中的背景为“07724e2aab97aa2dcaebbcfa390e4404.gif”(一个动图,如图6.2.2所示)、边框大小为10,以及表格于页面中的对齐方式为“居中对齐”。

图6.2.1 背景图片“manyxiaoxin.jpg”

图6.2.2 表格中的背景动图一瞬间的截图

在“tr”、“th”和“td”三个标签中,分别用来定义某表格中的一个行、表头单元格和表格中的一个列。且在这些标签中,主要对“表格背景颜色”(bgcolor,此处为达到表格渐变绿色的效果,每行所设置的bgcolor的数值皆不同)和表格中字体的样式,如字体大小(font-size: 20px)、字体款式(font-family: 华文新魏)和字体宽度(font-weight: 500)。

  1. 代码运行结果如下图6.3.1所示:

图6.3.1代码运行结果图(表格中动图无法展示,仅截图)

  • 实验总结:

1、实验中所遇问题及解决方案

(1)“xsi:noNamespaceSchemaLocation”与“xsi:schemaLocation”的区别问题

        A.实验中所遇到的问题:在“EXxml.xml”中创建了一个“xsi”命名空间后,预准备通过“xsi:schemaLocation”来定义“xsd”文件的位置,以便XML解析器解析XML文件。我直接在“Altova XMLSpy 2013”软件下的窗口中的菜单栏里的“DTD/模式”下点击“指定模式”直接生成“xsi:noNamespaceSchemaLocation”。

        B.解决方案:在此处,所生成的“noNamespaceSchemaLocation”与“schemaLocation”不相符,以为出现错误,但是运行后正常,我欲探究“xsi:noNamespaceSchemaLocation”与“xsi:schemaLocation”的区别,以及前者的作用。

经查阅,得知在XML Schema推荐标准中有指出,“xsi:schemaLocation”属性可以在实例中的任何元素上使用,而不一定是根元素。不过,“xsi:schemaLocation”属性必须出现在它要验证的任何元素和属性之前。此外,要注意的是,XML Schema推荐标准并没有要求模式处理器必须要使用“xsi:schemaLocation”属性,某些模式处理器可以通过其他的方式来得到模式文档的位置,而忽略“xsi:schemaLocation”属性。而“xsi:noNamespaceSchemaLocation”属性用于引用没有目标名称空间的模式文档,与“xsi:schemaLocation”属性不同的是,“xsi:noNamespaceSchemaLocation”属性的值是单一的值,只是用于指定模式文档的位置。

(2)页面中背景图片属性设置问题

        A.实验中所遇到的问题:在页面中所设置的背景图片中,若是页面中的表格多,界面可翻滚,则背景图片会出现重复,导致页面不够精致美观(如图7.2.1)。

        B.解决方案:经过相关资料的查询,并再次对本代码进行检查,发现是由于代码中使用“background-repeat:no-repeat”属性设置来改变背景图片的平铺效果,使得背景图片展示为“no-repeat”不平铺规则。因此,本实验中的背景图片出现重复。

在CSS规则中,“background-repeat”控制的平铺规则有:

repeat-x:横向平铺;

repeat-y:纵向平铺;

repeat:横向平铺和纵向平铺(默认值);

no-repeat:不平铺;

round:背景图像自动缩放直到适应且填充满整个容器或某个方向。(CSS3)

space:背景图像以相同的间距平铺且填充满整个容器或某个方向。(CSS3)

但是在此处代码中,以上属性皆替换尝试过,皆未能够使背景图片平铺。最终也未能解决此问题,此处将在之后的学习中再继续深入专研,在此由于对于整体页面的效果无较大劣性影响,便不再深究。

图7.2.1背景图片出现重复问题

XML、XML Schema及XSL的应用——信息组织实验报告相关推荐

  1. java商品信息管理实验报告_java学生信息管理系统实验报告

    java学生信息管理系统实验报告 JAVA 程序设计实验报告学 号:姓 名: 班 级: 实验.Java 课程设计--------学生信息管理系统一.实验目的 1. 掌握 Java 基本语法2. 理解面 ...

  2. 学生管理系统c语言代码实验报告,C语言学生信息管理系统实验报告(含源代码).doc...

    实 验 四:结构体 实验目的: 1.更加灵活的使用数组作为函数参数: 2.初步掌握开发一个小型实用系统的基本方法: 3.初步掌握书写程序设计开发文档的能力. 实验内容: 程序一:学生信息管理系统 编写 ...

  3. c语言学生信息管理系统实验报告

    一.问题描述 题目:学生信息管理系统设计 功能:学生信息管理系统设计,每个学生信息作为一条记录,包括姓名.学号.性别.年龄. 系统要求实现以下功能: 1.增:录入学生信息(包括学生学号.姓名.性别.年 ...

  4. 现代化信息查询实验报告

    检索题目 : 计算机网络安全相关学位论文 文献类型 : 学位论文 检索词 (题目或关键词): 计算机 网络安全 检索工具 : 万方数据知识平台 检索策略 检索结果 [学位论文]计算机网络安全防护的研究 ...

  5. 服务器代理设置与MIB信息获取实验报告,MIB浏览器的设计试验报告

    一.实验目的 1.基本掌握了 MIB的结构: 2.掌握C++环境下SNMP编程的基本方法. 二.实验环境 1.VC++ 6.0 2.<Visual C++开发基于SNMP网络管理软件>书的 ...

  6. 山东信息Linux实验报告,山东大学linux实验4.doc

    山东大学linux实验4 a dash date 2 m Display all 130 possibilities? (y or n) 输入n 又显示m 3 administrator@ubuntu ...

  7. 合肥工业大学信息隐藏实验报告

    ✅作者简介:CSDN内容合伙人.信息安全专业在校大学生

  8. XML——XML Schema

    [0]README 0.0)本文文字描述转自 core java volume 2 , 旨在理解 XML--XML Schema 的基础知识 :(本文不涉及源代码, 很遗憾,以后会补充) [1]XML ...

  9. XML:DTD:Schema

    1.从xml的文档结构最高可抽象到纵横两个方面:节点 和 属性 <topnode name="top"> <midtop name="mid" ...

最新文章

  1. 嵌入式linux------ffmpeg移植 解码H264(am335x解码H264到yuv420并通过SDL显示)
  2. 增大胸围!Mr Burning带你在家全方位虐胸!
  3. 2012 Java陷阱
  4. Android下强制打开软键盘
  5. JavaFX游戏(四连环)
  6. 电脑录制操作最为gif动态图工具
  7. Python Flask实现修改和删除数据
  8. Java虚拟机(六)——虚拟机栈
  9. 高品质餐饮相关场景模型素材,开始独特的场景来展示设计。
  10. 【简●解】POJ 1845 【Sumdiv】
  11. 【三】Jmeter:测试片段
  12. Docker内核参数优化
  13. clock gate cell
  14. sap 分摊分配不产生会计凭证的原因_会计凭证的实际分类及凭证管理应用
  15. 搭建物联网服务器基于nodejs
  16. 高通芯片(Android)恢复\编辑\备份 imei(nv信息)工具及步骤
  17. 关于农历闰月年份的口诀
  18. python爬取微博评论_详解用python写网络爬虫-爬取新浪微博评论
  19. python怎么打星号金字塔_python打印星号金字塔的方法_后端开发
  20. arduino硬件虚拟键盘中对应键盘上的按键整理

热门文章

  1. Android Studio 4以上版本设置成中文
  2. 原来关闭电脑弹窗广告这么容易!只需这样简单几步,就能轻松搞定
  3. 外罚法内罚法matlab,罚函数法
  4. 2022-2028年中国五轴联动机床行业市场运行格局及前景战略分析报告
  5. 免疫磁珠分选原理(链霉亲和素磁珠/链霉亲和素-生物素(SA-Biotin)/免疫沉淀磁珠Protein A/G)
  6. navicat使用及SQL查询语法
  7. 【论文笔记】2017 NIPS会议论文整理
  8. 安卓手机解锁:Device is locked. Please unlock the device first
  9. 用physon代码生成一个打飞机小游戏
  10. 转发SQLSERVER数据库索引实现