xmlspy 官方中文教程

欢迎使用XMLSpy 2005企业版

  Altova XMLSpy© 2005 是业界标准XML的开发环境,可用于涉及XML、XML Schema、XSLT、XQuery、SOAP、WSDL和Web服务技术的企业级应用的设计、编辑和调试。它是提高J2EE、.NET和数据库开发人员开发效率的终极利器。




用户手册

  本用户手册包含一组教程和对XMLSpy 2005中各种功能的描述,通过它们您可以快速上手。除此之外,本用户手册还包含了一个全面介绍XMLSpy 2005集成开发环境(IDE)的各种功能的参考手册。本用户手册由下列部分组成:


·介绍:概述Altova公司的XML产品。

·XMLSpy教程:向您展示如何应用XMLSpy 2005完成主要的XML开发工作。












·
XML的编辑与验证

·Schema/DTD的编辑与验证

·XSLT的编辑与转换












·
详细描述XMLSpy2005中的五种视图(view):Text视图(文本视图)、增强型Grid视图(网格视图)、Schema/WSDL视图、Authentic视图(直观视图)以及Browser视图(浏览器视图)。将有五节分别对这五种视图的图形用户界面(GUI)与功能以及在这些视图中出现的组件(component)、符号(symbol)和图标(icon)进行介绍。通过这几节,您将对XMLSpy2005的五种视图有所了解并掌握如何使用这些视图。

·描述如何将XMLSpy 2005与Visual Studio .NET集成。

·介绍如何使用XSLT/XQuery调试器(Debugger)组件(它是与您的XMLSpy 2005产品一同交付的)。利用XSLT/XQuery调试器,您可以对XSLT1.0/2.0样式表和XQuery文档进行检查和修正。在调试XSLT的过程中,您可以在XML文件的转换(transformation)过程中进行单步调试。在XQuery的调试过程中,您可以单步调试一个XQuery文档,以便发现其中可能存在的错误。

·介绍XMLSpy 2005的SOAP调试器

·介绍XMLSpy 2005的代码生成功能

·用户参考手册:其中包含对XMLSpy 2005中的所有菜单命令的介绍。

介绍

  本节将简单描述:








·
Altova的各种XML产品以及它们之间的关系

·XMLSpy的主要功能

·用户界面





本节旨在对XMLSpy 2005作一般性的介绍,并使您了解该产品的性能和用户界面。


Altova的XML产品家族

  Altova的XML产品家族由一套易于使用、相互补充的工具组成,它们为您提供了一套综合的XML应用开发环境,能够满足您在处理XML方面的全部需要。 Altova产品家族目前包括下列产品:

Altova XMLSpy®
2005是一个用于开发XML工程的综合集成开发环境(IDE),它有三种配备了不同功能的版本。企业版(EnterpriseEdition)的功能是最强的,它为DTD、XMLSchema、XML文件以及XSLT样式表的创建和编辑提供了高效而灵活的环境。它具有强大的编辑功能、支持多种文档视图(包括Altova特有的Authentic视图)和XSLT转换(通过一个内置的XSLT处理器)。它可以在XML文档与文本文件/数据库之间进行导入和导出。它所提供的其他一些功能包括:对工程中XML文档的管理、提供了XSLT和XQuery调试器、WSDL编辑器和代码的自动生成。专业版(ProfessionalEdition)和家庭版(Home Editition)所配备的功能则有所不同。

Altova StyleVision®

2005为复杂XSLT样式表的编写提供了新的方法,它为用户提供了一种直观的、拖放式用户界面。利用StyleVision,您可以创建Authentic样式表来控制Authentic视图中的XML文档显示与数据录入。StyleVision 2005 仅在企业版(EnterpriseEdition)和专业版(Professional Edition)中配备。

Altova Authentic®2005(分为桌面版和浏览器版)是一种词处理器型的编辑程序,它支持基于表单的XML文档数据录入。您可以根据schema往XML文档中即时添加成分(比如图像、表格等)或进行验证。

Altova MapForce2005该产品用于两个schema间的映射,以及将符合某一schema的XML文件转换为符合另一个schema的XML文件。

Altova网站
您也许希望定期检查Altova网站(www.altova.com
),以获得新闻、更新、补充文档和支持等。

所有Altova产品的用户手册均可通过以下方式获得:








·
在线手册 —— 可通过Altova网站上的Support页面进入。

·适于打印的PDF文件 —— 您可以从Altova网站上下载到本地机器并打印。

·印刷版书籍 —— 您可以通过Altova网站上的一个链接购买。





网站上的文档是定期更新的,并保持最新状态。
XMLSpy的主要功能

  XMLSpy2005是一个用于XML工程开发的集成开发环境(Integrated DevelopmentEnvironment,简称IDE)。XMLSpy2005可连同其他工具一起进行各种XML及文本文档的编辑和处理、进行XML文档(比如与数据库之间)的导入导出、在某些类型的XML文档与其他文档类型间作相互转换、关联工程中的不同类型的XML文档、利用内置的XSLT 1.0/2.0处理器和XQuery1.0处理器进行文档处理,甚至能够根据XML文档生成代码。

XMLSpy 2005还提供了一中XML文档的图形化编辑视图——Authentic视图(直观视图),它使得用户可以像使用字处理软件那样对XML文档进行数据录入。Authentic视图在下列场合特别有用:








·
不熟悉XML的人被要求把数据录入XML文档

·多个用户需要浏览或将数据录入位于某个服务器或共享资源上的单个文档。





本节我们仅对XMLSpy 2005的主要功能作简要的概述。这些功能在后面介绍各个视图(Text视图、Schema/WSDL视图、Authentic视图等)的章节和用户参考手册中还会被详细描述。请注意,本节没有完全列出XMLSpy 2005的所有功能。本节的目的只是给您提供一个XMLSpy 2005所支持功能的大致印象。


在多种编辑格式下编辑XML文档
您可以将XML文档作为普通文本来编辑(Text视图)、也可以在一个具有层次结构的表中进行编辑(增强型Grid视图),还可以在图形化的所见即所得(WYSIWYG)视图中编辑(Authentic视图)。对于XML Schema和WSDL文档,您还可以使用Schema/WSDL视图,它的图形化用户界面极大地简化了复杂schema和WSDL文档的创建。您可以根据需要在各种视图间进行切换。Browser视图(浏览器视图)可用于浏览XSLT样式表对XML文档的转换结果和HTML文档。


良构性(well-formedness)检查和内置验证器(validator)
在您切换视图或保存文件时,XMLSpy会自动对XML文档进行良构型检查。如果是关联了schema(DTD或XMLSchema)的XML文件,XMLSpy还会对它进行验证(validation)。对于其他类型的文档(如DTD等),XMLSpy也会作语法和结构上的检查。


结构化编辑
Text视图中,行号、缩进、书签以及可展开/折叠的元素显示等功能将协助您快速而有效地浏览文档。


智能编辑
在Text视图中,如果正在编辑的XML文档已经关联了schema,那么自动完成功能将在编辑过程中提供极大的帮助。在您敲击键盘的同时,光标所在位置会出现一个列有元素(element)、属性(attribute)和允许出现的枚举型属性值(enumerated attribute values)的窗口。另外,在您完成首标签(opening tag[译注//正式名称为starttag])的输入时,自动完成功能会自动为您插入相应的尾标签(closing tag[译注//正式名称为endtag]),而您在弹出窗口中选择的属性也会被自动插入并被引号括起来。如果一个元素下必须出现某些元素或/和属性,那么您还可以选择在该元素被插入时为它自动生成那些必需的成分。此外,每个视图都有一组输入助手(EntryHelper)[译注//输入助手是对IDE中一些窗口的统称,利用这些窗口,用户可以方便地往文档中插入成分。],通过它们使您可以往文档中插入成分[译注//比如插入一个元素(element)]或为主窗口中选中的成分指定属性。


Schema的编辑和管理
您可以在Schema/WSDL视图中轻松而快捷地创建XMLSchema。该视图免除了许多由学习XMLSchema结构、语法和设计原则而带来的困难。您还可以创建DTD(XMLSpy会对它们的语法进行检查)、在Schema和DTD间进行转换和生成档案(documentation),SchemaAgent功能将使您能够访问并使用存放于其他服务器上的schema ——所有这些都为专业的XML Schema管理和编辑提供了高效的XML开发环境。


内置的XSLT 1.0和XSLT 2.0处理器
内置的XSLT 1.0和XSLT2.0处理器都是符合相关W3C草案[译注//这里的草案指的是W3C工作草案(WorkingDraft),即正在制定过程中而尚未定型的W3C文档]的。它们使您可以直接在IDE中用XSLT 1.0或XSLT2.0样式表来转换XML文档,并用XSLT调试器对XSLT样式表进行调试。


内置的XQuery 1.0处理器
内置的XQuery 1.0处理器是符合2004年7月23日发布的W3C XQuery 1.0工作草案的。通过它,您可以直接在IDE中执行和调试XQuery文档。


XML文档的转换
XML文档的转换可以直接在IDE中进行(利用内置的XSLT处理器或其他外部的XSLT处理器)如果您要在XMLSpy 2005IDE中生成PDF文件[译注//XSL分为XSLT和XSL-FO,前者一般用于将XML文档转换为另一个XML文档或HTML文档,而后者一般用于将XML文档转换为PDF等文件格式。],可以使用外部的FO处理器;在您指定样式表之后,只需一个点击即可将XML转换为PDF。此外,可以在IDE中给XSLT转换(transformation)传递参数值


XPath求值
对于一个给定的XML文档,XPath求值(EvaluateXPath)功能可以列出一个XPath表达式返回的序列(或结点集)。您可以将文档结点(DocumentNode)或选择一个元素作为上下文结点(contextnode)。在创建XSLT样式表的过程中常常需要对XPath表达式进行求值,此时XPath求值功能是非常有用的。您还可以浏览返回序列中的各个结点。


XSLT 1.0/2.0调试器
XMLSpy 2005提供的XSLT 1.0和XSLT2.0调试器是符合相关W3C草案的。您可以使用XSLT调试器来调试XSLT样式表。XSLT调试器在一个XML文件上运行要调试的XSLT样式表,并按转换的步骤逐步生成输出结果,其间您可以看到上下文结点(contextnode)、被执行的模板(template)以及转换过程中各步的其他细节。


XQuery 1.0调试器
XQuery 1.0调试器是符合W3C于2004年7月23日发布的XQuery 1.0工作草案的。XQuery调试器用于调试XQuery文档,功能与XSLT相似。


XML工程管理
在XMLSpy 2005IDE中,您可以将相关的文件组织为工程(project)。与其他开发工具不同的是,在XMLSpy中,工程可以是一个树状结构(即可以在一个工程下创建另一个工程)。工程(project)中可以包含schema文件、XML数据文件、转换文件[译注//如一个XSLT文件]和输出文件等。工程中的文件被列在Project窗口(工程窗口)中,以便于访问工程中的文件。此外,您还可以为整个项目或整个目录做统一的设定,比如为整个目录的文件指定一个schema文件或XSLT文件。


Authentic视图
Authentic视图是XMLSpy2005提供的一种图形化的XML文档视图。用户可以像使用字处理软件那样轻易地将数据录入XML文档。StyleVision PowerStylesheet是一个已经用StyleVision2005创建好的样式表,用于指定在Authentic视图中如何格式化XML文档、以及如何进行数据录入。注意:Altova的免费软件Authentic 2005 Desktop Edition中也提供了Authentic视图。


数据库导入
您可以将数据库中的数据导入为一个XML文件、并生成一个与数据库结构对应的XML Schema文件。XMLSpy 2005目前支持下列数据库的导入:MS Access、MS SQL Server、Oracle、MySQL、Sybase、IBM DB2。


WSDL和SOAP
在Schema/WSDL视图中,您可以通过易用的图形用户界面创建和编辑WSDL文档。您也可以在IDE中创建、编辑并调试SOAP请求(SOAP request)。


对比XML文件(寻找差异)
XMLSpy 2005的对比功能让您能够发现两个XML文件的差异。您可以设置各种选项以配置该功能,比如忽略属性或子元素的次序、是否解析实体(entity)、是否忽略命名空间(namespace)等。对比功能还可用于进行文件夹的比较。


与Visual Studio .NET集成
XMLSpy 2005可以与您的Visual Studio .NET开发环境集成。您只要从Altova网站下载一个可执行程序然后运行它即可。


与Eclipse 3.0集成
Eclipse3.0是一个集成了以插件形式发布的不同类型应用的开放源码框架。XMLSpy 2005 for the EclipsePlatform是一个Eclipse 3.0的插件,通过它您可以在Eclipse 3.0 Platform中使用XMLSpy2005的功能(如果已经安装的话)。


代码生成
如果您要使用Java、C++或C#代码来处理XML文件中的数据,代码生成功能可以依据XML文档为您生成包含有关schema(DTD或XML Schema)的类定义代码。在XMLSpy 2005中,您可以直接根据DTD或XML Schema生成这样的代码。

用户界面

  XMLSpy 2005的图形用户界面(如图所示)由下列三个主要部分组成:








·
Project窗口:您可以在这里将文件组织为工程(Project),并对这些文件进行编辑;及Info窗口:这里显示当前编辑项[译注//这里的编辑项可以是一个XML元素、XML属性]的元信息。

·主窗口(Main Window):即显示正在编辑中的文档的窗口。可用的文档视图(在主窗口显示)数目与正在编辑的文档类型有关。您可以根据需要在各种视图间切换。

·各种输入助手(Entry Helper)窗口:输入助手泛指那些在文档编辑过程中为您提供帮助窗口,XMLSpy 2005提供了多种不同的输入助手。可用的输入助手将根据正在编辑的文档类型和主窗口的文档视图的不同而变化。 








可以将这些窗口停靠在菜单条和工具条的下面(如图),或者在菜单条和工具条的下方自由放置。它们的位置和大小都是可以调整的,除此之外,您还可以在Window菜单里控制这些窗口的开关。

以上这些窗口是用户界面的主要部分,本节将对它们进行介绍。对它们的详细描述请参加后面的章节。
Project窗口

  XMLSpy 2005使用常见的树结构视图来管理XML工程中的各个文件和URL。您可以根据文件扩展名或其他任意标准将文件URL放置到各个文件夹中。



您可以将文件夹(folder)映射到文件系统中的某个物理目录,也可以将文件系统中不同物理路径上的多个文件加入到一个文件夹中。XMLSpy中的工程文件夹是一种逻辑上的文件夹,表示一组文件的逻辑集合。它是文件系统中的某个物理目录。

为工程文件夹指定XSL转换
您可以为各个文件夹指定不同的XSL转换参数,甚至还能将物理上的同一个文件放置到多个工程文件夹中。如何您希望用不同的XSL样式表来处理保存在物理上的单个XML文件中的数据,以得到不同的输出结构(比如分别生成HTML和WML输出),那么这一特性是非常有用的。

为工程文件夹指定DTD/Schema
您可以为各个文件夹指定不同的DTD或Schema。这样,您不必修改XML文档本身即可用不同的DTD或XML Schema对它进行验证。该特性在您将DTD改为Schema的过程中是很有用的。

您可以使用Project菜单中的命令来进行工程的管理。

注:您可以通过Window | Project window菜单项来打开和关闭Project窗口。
Info窗口

  XMLSpy 2005中提供的Info窗口是一个很方便功能,它用于显示主窗口中光标所在XML元素或属性的相关细节。



Info窗口在所有编辑视图(editing view)中都可用,它在与xsd:annotation一同使用时特别有用。

注:您可以通过Window | Info window菜单项来打开和关闭Info窗口。
主窗口

  XMLSpy 2005中的主窗口(Main Window)是您查看和编辑文档的地方。


管理多个已打开的文件








·
在XMLSpy 2005中,您可以同时打开/编辑任意多个XML文档。

·主窗口中已打开的文件各有一个文档窗口(Document Window),这些文档窗口在主窗口的底部各有一个与之对应的标签(tab)。

·当这些窗口处于层叠(cascaded)、平铺(tiled)或最小化(minimized)状态时,它们的窗口标题栏中将显示文件的名称以及最小化、最大化、关闭按钮。

·点击标题栏上的最大化按钮或最小化按钮可以将文档窗口放到最大或最小。

·如果您最大化其中一个文档窗口,那么所有文档窗口都将最大化。

·您可以使用Window菜单中的相关命令将文档窗口层叠或平铺。

·如果您要编辑一个文件,只需点击一下该文件对应文档窗口的标题栏或窗口内部即可进入编辑状态。另一个方法是在Window菜单(其底部会列出所有已打开文件)中选择要编辑的文件。

·您还可以通过使用快捷键Ctrl+TabCtrl+F6来依次浏览所有已打开的文件。 






快速使用文件命令
鼠标右击位于主窗口底部的文件标签,将出现一个列有各种文件命令(比如打印、关闭、作为e-mail附件发送等)的上下文菜单,您可以用其中的命令对一个打开文件作相关处理。右击后将出现一个列有各个文件命令的上下文菜单。

主窗口视图
XMLSpy 2005为XML文档提供了多种视图(view)。这些视图有的是编辑视图(editing view)有的是浏览器视图(browser view):








·
Text视图一种具有语法分色显示(syntax-coloring)的源代码级编辑视图。

·增强型Grid视图(简称Grid视图)用于结构化编辑。在Grid视图中,文档被显示为一种结构化的网格,您可以图形化的方式对文档进行处理。该视图内部还支持一种数据库/表视图,用于以表格形式显示多个相同类型的元素。

·Schema/WSDL视图用于查看和编辑XML Schema以及WSDL文档。

·Authentic视图用于根据StyleVision Power Stylesheets来编辑XML文档。

·Browser视图一个集成的、支持CSS和XSL样式表的浏览器视图。





您可以通过点击文档窗口底部的视图按钮在不同的文档视图间进行切换。或者,您也可以使用View菜单中的命令来切换文档视图。

注:您可以为不同的文件扩展名定制默认的文档视图。方法是:点击菜单项Tools | Options,在弹出的Options对话框的File typesView选项卡中作必要的设置即可。
输入助手(Entry Helper)

  XMLSpy 2005提供了智能的编辑功能以帮助您快速创建有效的(valid)XML文档。这些功能将以类似调色板窗口的形式(即把所有可供选择的成分列在其中供您选择)出现,我们称之为输入助手(Entry Helper)。

在您编辑文档时,输入助手将根据当前的光标位置显示出结构化编辑选项。输入助手将从DTD、XML Schema或StyleVisionPower样式表获取所需信息。比如,如果您正在编辑一个XML数据文档,那么输入助手窗口中将显示可插入当前光标位置的元素、属性和实体。

在Visual Studio .NET中,输入助手窗口会有一个XMLSpy 2005前缀。

不同视图中的输入助手
可用的输入助手(窗口)将随着当前视图的不同而有所变化。根据您的Altova产品所支持的视图种类,输入助手可以分为下列几类:








·
Text视图和Grid视图:Elements、Attributes和Entities输入助手

·Schema Design视图:Component、Details和Facets输入助手

·WSDL Design视图:Overview和Details输入助手

·Authentic视图:Elements、Attributes和Entities输入助手





以上各个输入助手将在介绍相关视图的章节中进行描述。

注:您可以通过Window | Entry Helpers菜单项来打开和关闭输入助手窗口。
菜单条和工具条

  菜单条
菜单条包含各种应用菜单。它具有下列规则:








·
对于那些在当前视图中或在光标所处位置可用的菜单命令(menu command)[译注//也作菜单项(command item),即下拉菜单中的一行、一个条目。在本译文中,菜单命令与菜单项具有相同的含义。],它们将被显示为灰色并且被禁用。

·有些菜单命令会弹出一个包含更多选项的子菜单。对于有子菜单的菜单命令,在其菜单命令名称的右边会显示一个指向右方的箭头。

·有些菜单命令会弹出一个对话框,向您提示更多信息以进行命令选择。对于这些命令,其命令名称之后会显示一个省略号(...)。

·要使用一个菜单命令,只需点击菜单名,然后在下拉菜单中选择相应的命令即可。对于有子菜单的菜单项,只需把鼠标移到该菜单项上就会显示出子菜单。然后点击要使用的子菜单项即可。

·一个菜单项也可以通过使用相应的组合键来打开。各个菜单项的组合键均为Alt+KEY,其中的KEY为菜单项名称中带有下划线的字母。比如,File菜单的组合键为Alt+F

·可以通过下列步骤来选择一个菜单命令:(i)先通过恰当的组合键打开菜单,然后(ii)使用特定菜单命令的组合键(Alt+KEY,其中KEY为该菜单命令名称中带下划线的字母)。比如,要创建一个新文件(File | New),只需依次按Alt+FAlt+N即可[译注//注意在按Alt+F和Alt+N之间,Alt键不要松开]。

·有些菜单命令还能直接通过快捷键(Ctrl+KEY)来调用。对于有快捷键的菜单命令,相应的快捷键将显示在菜单命令名称的右侧。比如,您可以用快捷键Ctrl+N来创建一个新文件,以及用快捷键F8来验证XML文件等。 






工具条
工具条上是一组用作菜单命令快捷方式的按钮。当您把鼠标移到按钮上时,相应的命令名称会显示出来。只需点击按钮,即可执行相应的命令。

工具条上的按钮是分组的。您可以在Tools | Customize | Toolbars对话框中指定要显示哪几组工具条。在图形用户界面中,您还可以把工具条组拖到指定位置处:只需点击工具条手柄不放然后拖动到指定位置处释放即可。

教程

  本节包含下列教程:








·
XMLSPY教程:该教程将带领您经历一遍XML Schema的创建、XML文件的创建、编辑和转换、在XML与数据库间进行导入导出以及如何把相关文件组织为一个XMLSPY工程的过程。

·Authentic视图:该教程将向您介绍Altova特有的Authentic视图的用户界面和功能特性。在Authentic视图中,您可以通过图形化的用户界面来编辑XML文档,而不必了解XML以及文档所基于schema的结构。

·WSDL教程:您可以通过该教程熟悉WSDL设计视图 —— 通过它您可以快捷地设计WSDL出所需要的文档。





XMLSpy教程

  本教程将对XML作一个简短的概述,并带领您完成若干任务,以展示XMLSpy 2005的主要功能。

您将学到如何:








·
从头开始创建一个简单的schema

·利用简单类型和复杂类型构造一般化(generalized)的schema

·创建schema档案(documentation) 

·根据schema创建一个XML文档

·将XML数据复制到一个第三方产品(Excel)中,然后将数据导回XMLSpy 2005

·用schema验证(validate)XML文档

·在编辑XML文档过程中修改schema的设置

·用XSLT将XML文档转换为HTML,并在Browser视图中查看转换结果

·在数据库数据和XMLSpy 2005之间作导入(import)导出(export)

·根据一个MS Access数据库创建一个schema

·创建一个XMLSpy 2005工程(project)来组织XML文档





安装和配置
本教程假定您已在计算机上成功安装了XMLSpy 2005,并是一个注册用户或已获得一个用作免费评估的注册码。评估版(evaluationversion)的XMLSpy2005具有全部的功能,只是有30天的使用限制。您可以通过我们的具有安全保护的Web服务器上或在任何销售商处购买一个正式的使用许可证(license)。

教程和例子文件
教程文件位于
<XMLSpy 2005安装目录>\Examples\Tutorial文件夹下。


Examples文件夹包含了各种可供您实验的XML文件,而Tutorial文件夹中仅包含本教程中用到的文件。

Template文件夹中包含了所有的XML模板文件。在您选择菜单项File | New创建新文件时,它们将作为新文件的模版。模版文件中已包含了一些必需的内容,比如命名空间和XML声明等。
XMLSpy用户界面

  XMLSpy 2005用户界面被竖着分为三片区域[译注//由于您可以根据个人喜好对各个窗口的位置进行调整,因此这里所描述的均指在缺省情况下。]。中间区域为您的XML文档提供多种视图。中间区域的两旁是一些提供信息、编辑帮助和文件管理功能的窗口。








·
左侧区域包含Project(工程)Info(信息)窗口。





·中间区域被称为主窗口(Main Window),用于编辑和查看各种类型的文档。您可以在不同的视图(view)间进行切换:Text视图Grid视图Schema/WSDL设计视图Authentic视图Browser视图。这些视图将在它们各自的章节中作详细介绍。





·右侧区域包括三个输入助手(Entry Helper)窗口,用于协助您输入与添加元素(element)、属性(attribute)和实体(entity)。输入助手窗口中所列出的条目,与主窗口中的当前光标选中区域或当前光标位置有关。 







用户界面的细节随后我们将逐步介绍。注意:用户界面将根据主窗口中的当前活动文档[译注//主窗口可同时打开多个文档,当前活动文档指当前活动窗口中的文档。]以及所选用的视图而动态改变。

创建一个基本的XML Schema

  XMLSchema描述了XML文档的结构。可以用一个指定的XMLSchema来验证某个XML文档,以检查该XML文档是否符合其要求。[译注//请注意schema和XMLSchema的区别:schema或XML schema泛指XML文档的模式(即文档结构、数据类型等方面的描述),而XMLSchema是schema中的一种。除XML Schema以外,DTD、RELAXNG也是一种schema。]如果符合的话,那么该XML文档被称为是有效的(valid),否则它就是非有效的(invalid)。文档设计者[译注//指编写XML Schema的人]可以通过XMLSchema指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。[译注//一个XML文档是否有效总是针对某个schema来说的。对于同一个XML文档,可能用某个schema来检验是有效的,而用另一个schema来检验就是非有效的。]

XML Schema文档的结构和语法是较为复杂的,它自身也是一个XML文档,并且必须是符合XMLSchema规范的有效的XML文档。在XMLSpy 2005中,Schema/WSDL设计视图(Schema/WSDL DesignView)使您可以通过图形化界面轻易地构建有效的XML Schema。您所构建的XMLSchema文档同样可以在Text视图和Grid视图中进行编辑,但是用Schema/WSDL视图来创建和修改会更容易。

在本节中,您将学到如何在Schema/WSDL视图中编辑XML Schema。具体地,您可以学到如何进行下列任务:








·
创建一个schema文件

·为schema定义命名空间

·定义一个基本的内容模型(content model)

·通过上下文菜单和鼠标拖放向内容模型中增加元素

·配置内容模型视图





在您完成基本schema的创建后,您可以继续本教程的下一节,那里会教您如何使用XMLSpy 2005为XML Schema提供的一些高级功能。您将在学习schema导航和档案之后进入这部分。

命令介绍
本节您将只用到Schema/WSDL视图。下面介绍您将在该视图中用到的命令:

显示内容模型视图。该图标位于Schema概要视图中所列出的各个全局成分的左侧。点击该图标将显示出相关全局成分(global component)的内容模型。 

新建一个XML Schema文件

  要在XMLSpy 2005中新建XML Schema文件,首先您必须启动XMLSpy 2005,然后新建一个XML Schema(.xsd)文档。

启动XMLSpy 2005
要启动XMLSpy 2005,您可以双击桌面上的XMLSpy 2005图标,或者在开始 | 所有程序菜单中选择XMLSpy 2005程序。XMLSpy 2005启动后处于无打开文档的状态。



您可以看到用户界面的三个主要部分:(i)左侧的Project和Info窗口;(ii)中间的主窗口(目前为空);和(iii)右侧的输入助手窗口。


新建一个XML Schema文件
您可以通过以下步骤来新建一个XML Schema文件:








1.
选择菜单项File | New,此时将出现“Create new document(创建新文档)”对话框。 









 











2.
在该对话框中选择xsd XML Schema,然后点击OK确认。此时主窗口中将出现一个以Schema/WSDL设计视图打开的空schema文件。注:Schema/WSDL设计视图本身有两种显示方式:Schema概要视图(Schema Overview) —— 为整个schema提供一个关于所有全局成分的概要;以及内容模型视图(Content Model View) —— 为各个全局成分提供内容模型视图。在新建XML Schema文件时,Schema/WSDL视图将以Schema概要视图打开。您会被提示输入根元素(root element)的名称。 










 








3.
点击加亮的字段,并输入Company。然后以回车键确认。现在该schema的根元素为Company,它是一个全局元素(global element)[译注//全局元素、全局属性是XMLSchema中的术语,指的是那些在schema元素下声明的元素和属性。由于这些元素和属性可在XMLSchema中的别处被引用,因此被称作全局元素/属性。]。您在主窗口中所看到的视图(屏幕截图如下)被称为Schema概要视图(SchemaOverview)。它为该schema提供了一个概要:上方窗格(pane)中列出了所有的全局成分;下方窗格中显示所选全局成分的属性(attribute)及唯一性约束(identity constraint)。(只需点击全局成分左侧的图标即可对该全局成分的内容模型进行查看和编辑。) 










 








4.
Company元素的Annotations字段[译注//即Company右边那个以ann:开头的字段]中输入对该元素的描述,比如这里我们输入Root element

5.点击菜单项File | Save以保存该XML Schema文件,文件名可以自行选择(比如用AddressFirst.xsd)。 


定义名称空间

  XML命名空间(namespace[译注//也叫名称空间或名域。译者认为namespace译为名称空间是比较科学的,但命名空间的译法较为普遍并已成为习惯译法。])在XML Schema和XML文档中是一个要点。一个XML Schema文档必须给出它的XMLSchema命名空间,并且还可以(非必须的)为它的XML文档实例(XML documentinstance)定义一个目标命名空间(targetnamespace)。作为一个schema的设计者,您必须决定如何定义这些命名空间(本质上就是用什么前缀[译注//指命名空间前缀])。

在下面的示例中,您将要为XML文档实例定义一个目标命名空间。(每个XML Schema文档都必须有对XML Schema命名空间的引用,而XMLSpy 2005会在您新建一个XML Schema文档时为您自动生成。)创建一个目标命名空间,需要以下步骤:








1.
选择菜单项Schema Design | Schema settings[译注//该菜单项仅当主窗口处于Schema/WSDL设计视图时可用],此时将弹出Schema settings对话框。 









 











2.
点击Target Namespace单选按钮,然后输入http://my-company.com/namespace。您可以在对话框中下侧的命名空间列表中看到http://my-company.com/namespace前的命名空间前缀为空,这表明您所给出的命名空间将被作为XML Schema文档的缺省命名空间。

3.点击OK按钮确认。

 




注:

·在本例中,XMLSpy 2005自动创建的XML Schema命名空间的前缀是xs:

·一个相对本XML Schema有效的(valid)XML文档必须将其文档模型的命名空间定义为与这里的目标命名空间相同。

定义内容模型

  您已经在Schema概要视图中创建了一个叫做Company的全局元素(global element)。该元素应具有以下内容模型:包含一个Address元素和任意多个Person元素。能够具有内容模型的全局成分是元素(element)、复杂类型(complex type)和元素组(element group)。

在XMLSpy 2005中,全局成分的内容模型可以在Schema/WSDL视图的内容模型视图中显示。要查看或编辑全局成分的内容模型,您可以点击全局成分左边的图标

本节您将为
Company元素定义内容模型。

创建一个简单的内容模型
要创建
Company元素的内容模型,需要以下步骤:

1.在Schema概要视图中,点击Company元素左边的图标。此时将显示出Company元素的内容模型 —— 目前还是空的。(您还可以通过点击Component窗口[译注//其位置是可以调整的,缺省位置在主窗口的右边,有时需要点击Component选项卡才能显示出来。]中的Company条目以显示其内容模型。) 









 











2.
内容模型由容器(compositor)和成分(component)组成。容器(compositor)用于指定两个成分(component)之间的关系。在Company内容模型中,您必须先在Company元素下添加一个容器,然后在该容器中添加子元素(child element)[译注//是不能直接在一个元素中添加另一个元素的]。要添加容器,首先右击Company元素,在上下文菜单中选择Add Child | Sequence。(内容模型中可以使用三种容器:Sequence、Choice和All。) 












 





此时一个Sequence容器被插入到内容模型中,表明加入该容器中的成分在实例文档中必须按它们在容器中的顺序出现。 









 








3.
右击Sequence容器,然后选择Add Child | Element来加入元素。这样,一个未命名的元素成分(element component )就被添加到Sequence容器中了。

4.输入Address 作为该元素成分的名称,并以回车键确认。 










 








5.
再次右击Sequence容器,然后选择Add Child | Element。为新加入的元素成分输入名称:Person。 










 








目前,在您所定义的schema中,每个Company可以各有一个Address和一个Person。现在,我们需要增加Person元素的数量。




6.右击Person 元素,然后在上下文菜单中选择Unbounded。现在图中标出了Person元素允许出现的次数:1到无穷大。 










 








设定允许出现次数的另一个途径是:在Details窗口[译注//其位置是可以调整的,缺省位置在主窗口的右边,有时需要点击Details选项卡才能显示出来。]中,分别将minOccmaxOcc字段设为1和infinity。 





为内容模型的结构添加层次
到目前为止,您所创建的是一个简单的内容模型,它只有一层:即
company元素的一个子层次,它包含AddressPerson等元素。现在我们来定义Address元素的内容,使它包含NameStreet以及City等元素。这样,该内容模型便具有一个二层的结构。接着,我们要为Address元素添加一个子容器,并在其中增加元素成分。具体步骤如下:



1.
右击Address 元素,在上下文菜单中选择Add Child | Sequence添加一个Sequence容器。

2.右击该Sequence容器,然后选择Add Child | Element来加入元素。为新加入的元素成分输入名称:Name。 














 






复杂类型、简单类型以及XML Schema数据类型
到目前为止,我们还没有显式定义任何元素类型(element type)。如果您现在用Text视图看一下schema(如下所示),您将发现对于已加入的每个Sequence容器,其xs:sequence元素都被一个xs:complexType元素包围着。简言之,CompanyAddress元素都是复杂类型(complex type),因为它们的内容中包含子元素。复杂类型(complex type)元素泛指那些包含子元素或/和具有属性的元素。[译注//复杂类型和简单类型都只是针对元素而言的。]

<
xs:element
name
="
Company">

    <
xs:annotation
>

      <
xsocumentation
>
Root element</
xsocumentation
>