XML、XML Schema及XSL的应用——信息组织实验报告
一、实验目的:
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)。
- 代码运行结果如下图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的应用——信息组织实验报告相关推荐
- java商品信息管理实验报告_java学生信息管理系统实验报告
java学生信息管理系统实验报告 JAVA 程序设计实验报告学 号:姓 名: 班 级: 实验.Java 课程设计--------学生信息管理系统一.实验目的 1. 掌握 Java 基本语法2. 理解面 ...
- 学生管理系统c语言代码实验报告,C语言学生信息管理系统实验报告(含源代码).doc...
实 验 四:结构体 实验目的: 1.更加灵活的使用数组作为函数参数: 2.初步掌握开发一个小型实用系统的基本方法: 3.初步掌握书写程序设计开发文档的能力. 实验内容: 程序一:学生信息管理系统 编写 ...
- c语言学生信息管理系统实验报告
一.问题描述 题目:学生信息管理系统设计 功能:学生信息管理系统设计,每个学生信息作为一条记录,包括姓名.学号.性别.年龄. 系统要求实现以下功能: 1.增:录入学生信息(包括学生学号.姓名.性别.年 ...
- 现代化信息查询实验报告
检索题目 : 计算机网络安全相关学位论文 文献类型 : 学位论文 检索词 (题目或关键词): 计算机 网络安全 检索工具 : 万方数据知识平台 检索策略 检索结果 [学位论文]计算机网络安全防护的研究 ...
- 服务器代理设置与MIB信息获取实验报告,MIB浏览器的设计试验报告
一.实验目的 1.基本掌握了 MIB的结构: 2.掌握C++环境下SNMP编程的基本方法. 二.实验环境 1.VC++ 6.0 2.<Visual C++开发基于SNMP网络管理软件>书的 ...
- 山东信息Linux实验报告,山东大学linux实验4.doc
山东大学linux实验4 a dash date 2 m Display all 130 possibilities? (y or n) 输入n 又显示m 3 administrator@ubuntu ...
- 合肥工业大学信息隐藏实验报告
✅作者简介:CSDN内容合伙人.信息安全专业在校大学生
- XML——XML Schema
[0]README 0.0)本文文字描述转自 core java volume 2 , 旨在理解 XML--XML Schema 的基础知识 :(本文不涉及源代码, 很遗憾,以后会补充) [1]XML ...
- XML:DTD:Schema
1.从xml的文档结构最高可抽象到纵横两个方面:节点 和 属性 <topnode name="top"> <midtop name="mid" ...
最新文章
- 嵌入式linux------ffmpeg移植 解码H264(am335x解码H264到yuv420并通过SDL显示)
- 增大胸围!Mr Burning带你在家全方位虐胸!
- 2012 Java陷阱
- Android下强制打开软键盘
- JavaFX游戏(四连环)
- 电脑录制操作最为gif动态图工具
- Python Flask实现修改和删除数据
- Java虚拟机(六)——虚拟机栈
- 高品质餐饮相关场景模型素材,开始独特的场景来展示设计。
- 【简●解】POJ 1845 【Sumdiv】
- 【三】Jmeter:测试片段
- Docker内核参数优化
- clock gate cell
- sap 分摊分配不产生会计凭证的原因_会计凭证的实际分类及凭证管理应用
- 搭建物联网服务器基于nodejs
- 高通芯片(Android)恢复\编辑\备份 imei(nv信息)工具及步骤
- 关于农历闰月年份的口诀
- python爬取微博评论_详解用python写网络爬虫-爬取新浪微博评论
- python怎么打星号金字塔_python打印星号金字塔的方法_后端开发
- arduino硬件虚拟键盘中对应键盘上的按键整理
热门文章
- Android Studio 4以上版本设置成中文
- 原来关闭电脑弹窗广告这么容易!只需这样简单几步,就能轻松搞定
- 外罚法内罚法matlab,罚函数法
- 2022-2028年中国五轴联动机床行业市场运行格局及前景战略分析报告
- 免疫磁珠分选原理(链霉亲和素磁珠/链霉亲和素-生物素(SA-Biotin)/免疫沉淀磁珠Protein A/G)
- navicat使用及SQL查询语法
- 【论文笔记】2017 NIPS会议论文整理
- 安卓手机解锁:Device is locked. Please unlock the device first
- 用physon代码生成一个打飞机小游戏
- 转发SQLSERVER数据库索引实现