xml学习笔记 1. XML

XML    eXtensible Markup Language   可扩展标记语言,是一种标记语言,用来表示包含结构信息的数据。

XML是一种树形的结构,通常用于储存数据,数据库是一种表的结构,也用来储存数据,树可以表示表,但是表不能表示树。

标记语言的历史, 一开始有个SGML的语言,为通用的文档结构描述符号化语言,然后有了HTML,超文本链接语言,是sgml的一种应用,但是只能编写网页,最后有了XML。


xml有四个特点

可扩展性 Extensible   XML允许使用者创建和使用自己的标记。

灵活性    Flexibility       XML提供了结构化的数据表示方式,使用户界面分离与结构化数据。

自描述性 Self-descibling     XML表示数据的方式独立于应用系统,且数据能够重用

简洁性     Simplicity       XML比SGML简单 ,更易实现


XML的编写:

第一行通常为声明部分

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
包含   版本声明 version    编码声明encoding   独立性声明 standalone.
版本声明必须有,且为声明中的第一个属性。 独立性声明说明当前文件是否需要与其他文件配套使用。


处理指令:

<?xml-stylesheet href=“style.xsl” type=“text/xsl”?>
处理指令 使  XML用于特殊的应用程序时执行特定的操作。上面代码即使xsl执行引擎执行到这里时,根据style.xsl对XML文档进行相应的转换。但是XML解析器并不理解这些指令,也不进行操作。


注释

<!-- ........  -->
注释中不能出现两个连续的--      。 注释不能处于元素的标签内,也不能嵌套。


元素Element

属性Attribute

文本内容,为元素中的文本,一下几个字符使用预定义的实体替换:

<           "   &lt    "

>           "   &gt   "

&           "   &amp"

'             "    &apos"

"             "    &quot"

也可以直接使用CDATA进行输出,在其中写带有非法符号的文本

<![CDATA[......]]
XML出现的空白字符为空格,回车,换行,制表四种,在缺省状态下,对于连续出现的空白字符,解析器为将其缩减为一个空格字符。


XML良构性,Well-formed 指其结构能够符合要求,使程序能进行正确解析。略


命名空间  namespace

xmlns:prefix-name="URI" 
xmlns:xml namespace  之后跟命名空间的名字


之后是几个直接用xmlspy画出来的xml用例

这里的三个用例都由下一篇文章中的 dtd文件规格  以及下下篇文章中的  xsd文件。 

<?xml version="1.0" encoding="UTF-8"?>
<!-- 被2012 () 使用XMLSpy v编辑的 (http://www.altova.com) by -->
<info xsi:noNamespaceSchemaLocation="SpyBase1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<aliasTable>
		<row aID="1">
			<spyREF>A001</spyREF>
			<alias>Spy Grrrl</alias>
		</row>
		<row aID="2">
			<spyREF>A001</spyREF>
			<alias>La Femme Nikki</alias>
		</row>
		<row aID="3">
			<spyREF>A006</spyREF>
			<alias>LL</alias>
		</row>
		<row aID="4">
			<spyREF>A006</spyREF>
			<alias>Fred</alias>
		</row>
		<row aID="5">
			<spyREF>A003</spyREF>
			<alias>Big Ears</alias>
		</row>
		<row aID="6">
			<spyREF>A004</spyREF>
			<alias>Inspector Gadget</alias>
		</row>
		<row aID="7">
			<spyREF>A004</spyREF>
			<alias>Don Adams</alias>
		</row>
	</aliasTable>
	<missionTable>
		<row mID="M101">
			<spyREF>A001</spyREF>
			<date>2005-4-15</date>
			<description>Crack the code</description>
			<status>Mission Accomplished</status>
		</row>
		<row mID="M102">
			<spyREF>A001</spyREF>
			<date>2006-2-15</date>
			<description>Get the source</description>
			<status>Mission Accomplished</status>
		</row>
		<row mID="M103">
			<spyREF>A001</spyREF>
			<date>2006-5-4</date>
			<description>Hit the target</description>
			<status>In Progress</status>
		</row>
		<row mID="M104">
			<spyREF>A006</spyREF>
			<date>2006-6-15</date>
			<description>Shoot the rapid</description>
			<status>In Progress</status>
		</row>
		<row mID="M105">
			<spyREF>A003</spyREF>
			<date>2005-11-4</date>
			<description>Get the big cheese</description>
			<status>In Progress</status>
		</row>
		<row mID="M106">
			<spyREF>A003</spyREF>
			<date>2006-4-4</date>
			<description>Map the area</description>
			<status>In Progress</status>
		</row>
		<row mID="M107">
			<spyREF>A099</spyREF>
			<date>2006-5-2</date>
			<description>Get Smart</description>
			<status>In Progress</status>
		</row>
		<row mID="M108">
			<spyREF>A004</spyREF>
			<date>1967-2-15</date>
			<description>Protect Chief</description>
			<status>In Progress</status>
		</row>
		<row mID="M109">
			<spyREF>A004</spyREF>
			<date>2006-6-15</date>
			<description>Get some style</description>
			<status>Mission Accomplished</status>
		</row>
	</missionTable>
	<spyTable>
		<row spyID="A001">
			<firstName>Nikki</firstName>
			<lastName>Devgood</lastName>
		</row>
		<row spyID="A006">
			<firstName>Link</firstName>
			<lastName>Lister</lastName>
		</row>
		<row spyID="A003">
			<firstName>Danger</firstName>
			<lastName>Mause</lastName>
		</row>
		<row spyID="A099">
			<firstName>Barbara</firstName>
			<lastName>Feldon</lastName>
		</row>
		<row spyID="A004">
			<firstName>Maxwell</firstName>
			<lastName>Smart</lastName>
		</row>
	</spyTable>
</info>


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE info SYSTEM "SpyBase2.dtd">
<info>
	<row spyID="A001">
		<firstName>Nikki</firstName>
		<lastName>Devgood</lastName>
		<alias>Spy Grrrl</alias>
		<alias>La Femme Nikki</alias>
		<mission>
			<date>2005-4-15</date>
			<description>Crack the code</description>
			<status>Mission Accomplished</status>
		</mission>
		<mission>
			<date>2006-2-15</date>
			<description>Get the source</description>
			<status>Mission Accomplished</status>
		</mission>
		<mission>
			<date>2006-5-4</date>
			<description>Hit the target</description>
			<status>In Progress</status>
		</mission>
	</row>
	<row spyID="A006">
		<firstName>Link</firstName>
		<lastName>Lister</lastName>
		<alias>LL</alias>
		<alias>Fred</alias>
		<mission>
			<date>2006-6-15</date>
			<description>Shoot the rapid</description>
			<status>In Progress</status>
		</mission>
	</row>
	<row spyID="A003">
		<firstName>Danger</firstName>
		<lastName>Mause</lastName>
		<alias>Big Ears</alias>
		<mission>
			<date>2005-11-4</date>
			<description>Get the big cheese</description>
			<status>In Progress</status>
		</mission>
		<mission>
			<date>2006-4-4</date>
			<description>Map the area</description>
			<status>In Progress</status>
		</mission>
	</row>
	<row spyID="A099">
		<firstName>Barbara</firstName>
		<lastName>Feldon</lastName>
		<mission>
			<date>2006-5-2</date>
			<description>Get Smart</description>
			<status>In Progress</status>
		</mission>
	</row>
	<row spyID="A004">
		<firstName>Maxwell</firstName>
		<lastName>Smart</lastName>
		<alias>Inspector Gadget</alias>
		<alias>Don Adams</alias>
		<mission>
			<date>1967-2-15</date>
			<description>Protect Chief</description>
			<status>In Progress</status>
		</mission>
		<mission>
			<date>2006-6-15</date>
			<description>Get some style</description>
			<status>Mission Accomplished</status>
		</mission>
	</row>
</info>


<?xml version="1.0" encoding="UTF-8"?>
<!--用XMLSpy v2012产生的 XML文件(http://www.altova.com)-->
<book xsi:noNamespaceSchemaLocation="book.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<title xsi:type="bookTitleType">Data On the Web</title>
	<author>text</author>
	<author>text</author>
	<author>text</author>
	<section id="text" difficulty="text">
		<title xsi:type="sectionTitleType">1.xxxx</title>
		<p>text</p>
	</section>
	<section id="text" difficulty="text">
		<title xsi:type="sectionTitleType">1-1.xxxx</title>
		<p>text</p>
	</section>
	<section id="text" difficulty="text">
		<title>a</title>
		<figure width="12" height="24">
			<title xsi:type="figureTitleType">1-1-1.xxxx</title>
			<image source=""></image>
		</figure>
	</section>
	<section id="text" difficulty="text">
		<title xsi:type="sectionTitleType">120.250.215uafghaoh</title>
		<section>
			<title>afas</title>
			<figure width="" height="">
				<title xsi:type="figureTitleType">1-1-1.xxxx</title>
				<image source=""></image>
			</figure>
		</section>
	</section>
</book>









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
[实验目的] 1、安装并学习如何使用XMLSPY集成开发环境完成XML相关的开发工作。 2、熟悉和掌握XML规范的基本内容,包括XML声明、注释、处理指令、元素、属性、CDATA段、预定义实体、命名空间的使用,以及如何进行XML文档良构和有效性验证;能够灵活地使用XML层次数据来表示各种信息。 3、掌握如何在DTD文档中声明元素及其内容模型、属性,以及实体的声明和使用;使用内部/外部DTD规则,对XML数据文档的有效性进行约束。 [实验内容和步骤] 1、安装XMLSPY集成开发环境,新建XML、DTD文档,在各种不同的编辑视图中尝试采用不同的方式完成XML文档的编辑和查看;并使用XMLSPY提供的便利,建立XML、DTD两者之间的关联,进行XML文档的良构以及有效性验证。 2、附件中提供了一个名为SpyBase的Excel文件,其中包含Alias、Mission和Spy三张数据表,请分别完成下列任务: ①.使用一个XML文档(SpyBase1.xml)来描述其中包含的所有信息,基本保持原有数据的形式(不要将三个表中的数据进行嵌套)。请使用XML文档的Grid视图完成该文档的编写(需使用Grid视图中提供的表操作工具条),并验证文档的良构性。结果示例如下图所示(该图仅供参考,要求对aID、mID、spyID必须使用XML属性,其他字段使用XML元素): ②.使用一个XML文档(SpyBase2.xml)来描述其中包含的所有信息,要求通过XML元素的正确嵌套消除数据之间的参照关系产生的冗余。请使用XML文档的Text或者Grid视图完成该文档的编写,并验证文档的良构性。 3、为第二步中得到的SpyBase1.xmlSpyBase2.xml分别编写相应的外部DTD文档,建立模式与数据之间的关联,并进行文档有效性验证。在编写的DTD文档中,要求在DTD文档中使用参数实体来替换所有的#PCDATA和CDATA。 [实验思考] 在本实验中发现,一个XML文档可以通过平面的形式、或者层次的形式来表示多个关系数据库中的二维表,那么哪种方式更合适,为什么? [提交时间及内容] 最后提交时间 2013年?月?日 提交内容 提交SpyBase1.xmlSpyBase2.xml。 提交SpyBase1.dtd、SpyBase2.dtd。
[实验目的] 1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。 2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单数据类型,如何定义复杂数据类型,全局/局部元素和数据类型之间的区别;如何将XML Schema文档关联到XML实例数据文档,并完成文档的有效性验证。 3、掌握如何准确定义数据之间的参照完整性约束,如何在模式中使用多态性支持,如何在文档中定义空值等等。 [实验内容和步骤] 1、使用XMLSPY集成开发环境,新建XML Schema文档,在各种不同的编辑视图中尝试采用不同的方式完成XML Schema文档的编辑和查看;并使用XMLSPY提供的便利,建立XML、Schema两者之间的关联,进行XML文档的良构以及有效性验证。 2、严格按照下图给出的文档模型,在XML Schema编辑环境的Schema视图中完成book.xsd的编写(不要使用Text视图进行编写): 在上图中,没有指定简单类型元素和属性的数据类型,请根据合理的情况,完成数据类型的创建(至少使用到限制方式中的三种以上的限制方面),请在IDE的Details视图->type和Facets中完成上述任务。 在上图中,有三个title元素分别表示book、section和figure的标题,请定义下述类型: titleType:1-100个字符的文本; bookTitleType:titleType类型限制派生的子类型,要求取枚举值“Data On the Web”、“TCP/IP Illustrated”等; sectionTitleType:titleType类型限制派生的子类型,要求必须形如“1.xxxx”、“1-1.xxxx”等等(表示第一节、第一节下面的第一节等等,注意section是递归的形式); figureTitleType:titleType类型限制派生的子类型,要求必须形如“1-1.xxxx” 、“1-1-1.xxxx”(表示第一节中的第一个图、第一节下面的第一节的第一个图等等); 然后编写book.xml,并使用多态性(即所有title的类型均为titleType,而数据实例中指明具体类型),请确保通过文档有效性验证。 3、在上次的DTD实验中,我们编写了SpyBase1.xmlSpyBase2.xml、以及SpyBase1.dtd和SpyBase2.dtd,这次需要完成SpyBase1.xsd和SpyBase2.xsd,建立模式与数据之间的关联,并进行文档有效性验证。在编写的XSD文档SpyBase1.xsd中,要求使用key/keyref描述数据的实体完整性以及数据之间的参照完整性(SpyBase2.xml不需要,因为已经使用嵌套消除了参照关系)。 [实验思考] 与ID/IDREF相比,key/keyref有哪些优点,在使用上有何不同? 假设SpyBase1.xml中的alias、mission、spy来自不同的命名空间中,如何在Schema中对其进行限定,请在XMLSPY中完成相应的xsd文档?修改SpyBase1.xml,并验证新的SpyBase1_2.xsd是否正确? [提交时间及内容] 最后提交时间 2013年?月?日 提交内容 提交book.xsd、book.xml(使用多态)。 提交SpyBase1. xsd、SpyBase2. xsd。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值