欢迎使用 XMLSpy 2005 企业版

xml spy
欢迎使用XMLSpy 2005企业版

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

xmlspy

首页 下一页

© 2004 Altova

本文档由中国XML论坛Collin Hsu翻译。


用户手册

用户手册

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

· 介绍：概述Altova公司的XML产品。
· XMLSpy教程：向您展示如何应用XMLSpy 2005完成主要的XML开发工作。

· XML的编辑与验证
· Schema/DTD的编辑与验证
· XSLT的编辑与转换

· 详细描述XMLSpy 2005中的五种视图（view）：Text视图（文本视图）、增强型Grid视图（网格视图）、Schema/WSDL视图、Authentic视图（直观视图）以及Browser视图（浏览器视图）。将有五节分别对这五种视图的图形用户界面（GUI）与功能以及在这些视图中出现的组件（component）、符号（symbol）和图标（icon）进行介绍。通过这几节，您将对XMLSpy 2005的五种视图有所了解并掌握如何使用这些视图。
· 描述如何将XMLSpy 2005与Visual Studio .NET集成。
· 介绍如何使用XSLT/XQuery调试器（Debugger）组件（它是与您的XMLSpy 2005产品一同交付的）。利用XSLT/XQuery调试器，您可以对XSLT 1.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产品家族

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

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

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

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

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

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

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

· 在线手册 —— 可通过Altova网站上的Support页面进入。
· 适于打印的PDF文件 —— 您可以从Altova网站上下载到本地机器并打印。
· 印刷版书籍 —— 您可以通过Altova网站上的一个链接购买。

网站上的文档是定期更新的，并保持最新状态。

支持和反馈
如果您需要额外的资料或要查询Altova的产品，请访问我们设于Altova网站上的支持中心（Support Center）。在那里您可以获得：

· 常见问答（FAQ）页面的链接
· 关于Altova产品以及一般XML话题的讨论区（Discussion forums）
· 在线支持表单（Online Support Forms） —— 我们的支持小组会对此进行处理

同样也欢迎将您对文档的反馈发给我们。


XMLSpy的主要功能

XMLSpy的主要功能

XMLSpy 2005是一个用于XML工程开发的集成开发环境（Integrated Development Environment，简称IDE）。XMLSpy 2005可连同其他工具一起进行各种XML及文本文档的编辑和处理、进行XML文档（比如与数据库之间）的导入导出、在某些类型的XML文档与其他文档类型间作相互转换、关联工程中的不同类型的XML文档、利用内置的XSLT 1.0/2.0处理器和XQuery 1.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或XML Schema）的XML文件，XMLSpy还会对它进行验证（validation）。对于其他类型的文档（如DTD等），XMLSpy也会作语法和结构上的检查。

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

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

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

内置的XSLT 1.0和XSLT 2.0处理器
内置的XSLT 1.0和XSLT 2.0处理器都是符合相关W3C草案[译注//这里的草案指的是W3C工作草案（Working Draft），即正在制定过程中而尚未定型的W3C文档]的。它们使您可以直接在IDE中用XSLT 1.0或XSLT 2.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 2005 IDE中生成PDF文件[译注//XSL分为XSLT和XSL-FO，前者一般用于将XML文档转换为另一个XML文档或HTML文档，而后者一般用于将XML文档转换为PDF等文件格式。]，可以使用外部的FO处理器；在您指定样式表之后，只需一个点击即可将XML转换为PDF。此外，可以在IDE中给XSLT转换（transformation）传递参数值。

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

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

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

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

Authentic视图
Authentic视图是XMLSpy 2005提供的一种图形化的XML文档视图。用户可以像使用字处理软件那样轻易地将数据录入XML文档。StyleVision Power Stylesheet是一个已经用StyleVision 2005创建好的样式表，用于指定在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集成
Eclipse 3.0是一个集成了以插件形式发布的不同类型应用的开放源码框架。XMLSpy 2005 for the Eclipse Platform是一个Eclipse 3.0的插件，通过它您可以在Eclipse 3.0 Platform中使用XMLSpy 2005的功能（如果已经安装的话）。

代码生成
如果您要使用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菜单里控制这些窗口的开关。

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

上一页 首页 下一页

© 2005 Altova


Project窗口

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窗口

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+Tab或Ctrl+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 types和View选项卡中作必要的设置即可。

上一页 首页 下一页

© 2005 Altova


输入助手（Entry Helper）

输入助手（Entry Helper）

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

在您编辑文档时，输入助手将根据当前的光标位置显示出结构化编辑选项。输入助手将从DTD、XML Schema或StyleVision Power样式表获取所需信息。比如，如果您正在编辑一个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+F和Alt+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出所需要的文档。

上一页 首页 下一页

© 2005 Altova


XMLSPY教程

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，并是一个注册用户或已获得一个用作免费评估的注册码。评估版（evaluation version）的XMLSpy 2005具有全部的功能，只是有30天的使用限制。您可以通过我们的具有安全保护的Web服务器上或在任何销售商处购买一个正式的使用许可证（license）。

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

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

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


XMLSpy用户界面

XMLSpy用户界面

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

· 左侧区域包含Project（工程）和Info（信息）窗口。
· 中间区域被称为主窗口（Main Window），用于编辑和查看各种类型的文档。您可以在不同的视图（view）间进行切换：Text视图、Grid视图、Schema/WSDL设计视图、Authentic视图和Browser视图。这些视图将在它们各自的章节中作详细介绍。
· 右侧区域包括三个输入助手（Entry Helper）窗口，用于协助您输入与添加元素（element）、属性（attribute）和实体（entity）。输入助手窗口中所列出的条目，与主窗口中的当前光标选中区域或当前光标位置有关。

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


创建一个基本的XML Schema

创建一个基本的XML Schema

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

XML Schema文档的结构和语法是较为复杂的，它自身也是一个XML文档，并且必须是符合XML Schema规范的有效的XML文档。在XMLSpy 2005中，Schema/WSDL设计视图（Schema/WSDL Design View）使您可以通过图形化界面轻易地构建有效的XML Schema。您所构建的XML Schema文档同样可以在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文件

新建一个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）[译注//全局元素、全局属性是XML Schema中的术语，指的是那些在schema元素下声明的元素和属性。由于这些元素和属性可在XML Schema中的别处被引用，因此被称作全局元素/属性。]。您在主窗口中所看到的视图(屏幕截图如下)被称为Schema概要视图（Schema Overview）。它为该schema提供了一个概要：上方窗格（pane）中列出了所有的全局成分；下方窗格中显示所选全局成分的属性（attribute）及唯一性约束（identity constraint）。（只需点击全局成分左侧的 [image] 图标即可对该全局成分的内容模型进行查看和编辑。）

4. 在Company元素的Annotations字段[译注//即Company右边那个以ann:开头的字段]中输入对该元素的描述，比如这里我们输入Root element。
5. 点击菜单项File | Save以保存该XML Schema文件，文件名可以自行选择（比如用AddressFirst.xsd）。


定义命名空间

定义名称空间

XML命名空间（namespace[译注//也叫名称空间或名域。译者认为namespace译为名称空间是比较科学的，但命名空间的译法较为普遍并已成为习惯译法。]）在XML Schema和XML文档中是一个要点。一个XML Schema文档必须给出它的XML Schema命名空间，并且还可以（非必须的）为它的XML文档实例（XML document instance）定义一个目标命名空间（target namespace）。作为一个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视图的内容模型视图中显示。要查看或编辑全局成分的内容模型，您可以点击全局成分左边的图标 [image] 。

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

创建一个简单的内容模型
要创建Company元素的内容模型，需要以下步骤：
1. 在Schema概要视图中，点击Company元素左边的 [image] 图标。此时将显示出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选项卡才能显示出来。]中，分别将minOcc和maxOcc字段设为1和infinity。

为内容模型的结构添加层次
到目前为止，您所创建的是一个简单的内容模型，它只有一层：即company元素的一个子层次，它包含Address和Person等元素。现在我们来定义Address元素的内容，使它包含Name、Street以及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元素包围着。简言之，Company和Address元素都是复杂类型（complex type），因为它们的内容中包含子元素。复杂类型（complex type）元素泛指那些包含子元素或/和具有属性的元素。[译注//复杂类型和简单类型都只是针对元素而言的。]

 <xs:element name="Company">
   <xs:annotation>
     <xs:documentation>Root element</xs:documentation>
   </xs:annotation>
   <xs:complexType>
     <xs:sequence>
       <xs:element name="Address">
         <xs:complexType>
           <xs:sequence>
             <xs:element name="Name"/>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
       <xs:element name="Person"/>
     </xs:sequence>
   </xs:complexType>
 </xs:element>

而简单类型（simple type）元素指的是那些仅包含文本（不能包含子元素）、并且没有属性的元素。文本（text）可以是字符串、日期、数字等。我们希望让Address 的子元素Name为仅包含文本的简单类型，而且其文本内容被限定为字符串。我们可以利用XML Schema数据类型xs:string来进行上述定义。下面，我们将Name元素定义为该数据类型。

1. 点击Name 元素并选中它。
2. 在Details窗口中的type组合框的下拉菜单中选择xs:string 项。

此时，内容模型视图中的Name元素的左上角会显示一个图标 [image] ，表明该元素包含的是文本数据。注意：此时minOcc和maxOcc的值都为1，表明该元素出现并仅出现一次。

Name 元素的文本表示如下：

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

注：简单类型元素可以选择任意一个允许的XML Schema数据类型作为其数据类型。无论选择何种数据类型，元素方框中都会显示上述表明包含文本内容的图标。

上一页 首页 下一页

© 2005 Altova


以鼠标拖放的方式添加元素

以鼠标拖放的方式添加元素

前面，您是通过在一个元素或容器上右击、然后使用上下文菜单来添加元素的。其实，您也可以通过鼠标拖放的方式来添加元素，这种方式比使用菜单命名更为快捷。本节，您要通过鼠标拖放的方式来完成Address等元素的创建。具体步骤如下：

1. 鼠标单击Name 元素不放，同时按住Ctrl键不放[译注//也可以先按住Ctrl键不放，再单击Name元素不放]，然后用鼠标拖动该元素框。此时鼠标光标处将出现一个“+”图标，表明您将要复制元素。同时也会出现一个元素框的副本以及连接线（表明该元素副本将被插入的位置）。

2. 如果所选插入位置合法的话，松开鼠标键，即可创建新元素。如果不小心把新元素放在了错误的位置上，那么用鼠标将其拖至Name元素的下方。这样，一个Name元素的副本便创建好了。

3. 双击新创建元素的方框，然后输入Street作为其元素名称。
4. 我们可以用同样的方法再创建一个City元素。现在的内容模型将如下所示：

Address元素有以下元素序列：一个Name元素、 一个Street元素和一个City元素。


配置内容模型视图

配置内容模型视图

现在进行内容模型视图的配置。请执行下列步骤：

1. 首先打开某个成分（component）的内容模型视图，否则Configure view菜单命令是不可用的。
2. 选择菜单项Schema Design | Configure view，此时将出现Schema display configuration对话框。

3. 点击 [image] 图标（在Element选项卡中），添加一行描述信息。
4. 在下拉菜单中选择type（或双击该字段，然后输入“type”）。这样，内容模型视图中的所有元素框中都将显示出数据类型信息。
5. 在Single line settings窗格中，选择Hide line if no value。这样，如果一个元素没有数据类型（比如该元素是复杂类型），那么就不在元素框中显示数据类型信息。

从图中可以看到，类型信息在Name、Street以及City等简单类型元素的元素框中都显示了（xs:string），但在复杂类型元素的元素框中没有显示，因为我们已经选择了Hide line if no value选项。
6. 现在我们在Single line settings窗格中选择Always show line选项。[译注//该选项和Hide line if no value是互斥的]
7. 然后点击OK确认修改。

可以看到，此时所有的元素框（包括复杂类型元素的）中都有类型信息显示，只是对于复杂类型元素的元素框，那里的没有值。

注：
· 元素框中显示的信息描述行是可编辑的。您对它们的编辑，将影响元素的定义。
· 您在“Schema display configuration”对话框中的设置不仅影响显示，还会影响到schema档案（schema documentation）的输出和打印结果。


完成schema的创建

完成schema的创建

您已经为Address元素定义了内容。现在，您需要定义Person元素的内容。Person元素应包含以下子元素（都是简单类型）：First、Last、Title、PhoneExt和Email。除Title元素是可选的[译注//即可以出现，也可以不出现。]以外，其它元素都是必须出现的元素，并且必须以规定的次序出现。除了PhoneExt元素的数据类型（datatype）为xs:integer（并且被限定为2位）以外，其它元素的数据类型都是xs:string。

下面为Person元素定义上述内容模型：

1. 右击Person 元素，在上下文菜单中选择Add Child | Sequence插入一个Sequence容器。
2. 右击该Sequence容器，然后选择Add Child | Element加入元素。
3. 输入First 作为该元素成分的名称，然后按Tab键将光标移到type字段上。

4. 在下拉菜单中选择xs:string ，或者直接在type字段中输入xs:string。
5. 用同样的方式创建另外四个元素，将它们分别命名为Last、Title、PhoneExt和Email。

注：您可以通过按住Ctrl键、然后点击所需的元素，以选中多个元素。

定义一个可选的元素
右击Title元素，在上下文菜单中选择Optional。这时，元素框的边框从实线框变为虚线框，表明该元素是一个可选的元素[译注//即可以出现、也可以不出现的元素]。

另外，在Details窗口中，您可以看到minOcc=0 以及maxOcc=1，这同样表明了该元素是可选的。除了使用上下文菜单来设置元素为可选的，您还可以通过设置minOcc=0 来达到同样的目的[译注//minOcc表明该元素最小出现的次数]。

限定元素的内容
要将PhoneExt元素定义为数据类型是xs:integer、并且最多有两位数字，需要以下步骤：
1. 在PhoneExt元素的type字段的下拉菜单中选择（或直接输入）xs:integer 。

这时，Facets窗口的内容将发生变化。
2. 在Facets窗口中，双击maxIncl字段，并输入99。然后以回车键确认。

这样便定义了所有小于等于99的分机号码都是有效的（valid）。
3. 选择菜单项File | Save以保存对当前schema的修改。

注：
· 当您为一个元素选择了一个属于简单类型的XML Schema数据类型（比如，xs:string和xs:date）[译注//XML Schema数据类型也分为两大类，一类是简单类型的，另一个是复杂类型的。]作为其类型时，Details窗口将进行自动更新（content字段的值变为simple）。
· 当您为一个元素添加容器（compositor）时（sequence、choice或all），该元素的Details窗口也将进行自动更新（content字段的值变为complex）。
· 上面描述的schema可以从XMLSpy 2005的安装目录里获得。它的相对路径是<XMLSpy 2005安装目录>\Examples\Tutorial\AddressFirst.xsd。

上一页 首页 下一页

© 2005 Altova


高级的XML Schema定义

高级的XML Schema定义

前面您已经创建了一个简单的schema，现在我们开始了解一些schema开发过程中的高级特性。本节您将学会如何：

· 使用复杂类型和简单类型作为元素的类型。
· 创建全局元素、并在其他地方对它进行引用。
· 创建属性（attribute）及他们的特性（property）（包括枚举值等）。

本节您将在先前已创建的简单的schema —— AddressFirst.xsd —— 的基础上进行进一步设计。

命令介绍
本节您将只用到Schema/WSDL视图。下面介绍您将会用到的命令：

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

显示所有全局成分（即进入Schema概要视图）。该图标位于内容模型视图的左上角。点击该图标将切换到Schema概要视图，其中列出了所有的全局成分。

添加全局成分。该图标位于Schema概要视图的左上角。点击该图标，将添加一个全局成分。


使用复杂类型和简单类型

使用复杂类型和简单类型

您已经为Company元素定义了内容模型，也许您需要在schema中的别处对该内容模型进行重用。那么您就要将该元素作为复杂类型或全局元素来定义。本节，您将要使用全局复杂类型。您将首先创建一个全局的复杂类型，然后将它扩展用于内容模型。在本教程的后面部分，您还会学到有关全局元素的使用。

创建一个全局复杂类型
前面我们曾定义了一个简单的Address 元素（包含Name、Street和City元素），它是不能在需要地址格式的地方被重用的。下面，我们将把Address元素定义一个复杂类型，以便进行重用。步骤如下：

1. 在内容模型视图中，右击Address元素。
2. 在上下文菜单中选择Make Global | Complex type。这将创建一个名为AddressType的全局复杂类型（global complex type），而Company的内容模型中的Address元素的类型被自动指定为AddressType。在内容模型视图中可以看出，Address元素的内容为AddressType的内容模型，并且是在一个黄色方框中显示的。注意：现在Address元素的数据类型是AddressType。

3. 点击 [image] 图标。这时将出现Schema概要视图，其中列出了所有的全局成分。
4. 在Components窗口中，点击Element和complexType条目左侧的“+”以展开列表，其中可以看到schema中的所有元素和复杂类型。
现在Schema概要视图中列出了两个全局成分：一个Company元素以及一个复杂类型AddressType。在Components窗口中也可以看到复杂类型AddressType。

5. 点击AddressType左侧的 [image] 图标查看其内容模型（如下图）。请注意复杂类型方框的形状（方框的左上角和左下角是钝的）。

6. 点击图标 [image] 以返回Schema概要视图。

扩展复杂类型的定义
我们现在要用复杂类型AddressType来创建两种特定国家的地址。为此，我们先基于AddressType定义一个新的复杂类型，然后再对它的定义加以扩展。具体步骤如下：

1. 切换到Schema概要视图。（如果您正处于内容模型视图中，则点击图标 [image] 既可。）
2. 点击全局成分列表左上角的 [image] 图标，出现菜单：

3. 在菜单中选择ComplexType。此时，全局成分列表中将添加一个新行，光标停留在该行的名称栏。
4. 输入US-Address后以回车键确认。（如果您没有输入连字符“-”，而是以一个空格代替的话，那么元素名将显示为红色，表明其中包含非法字符。）

5. 点击US-Address左侧的 [image] 图标，查看其内容模型。现在US-Address的内容模型视图显示为空（如下图）。
6. 在Details窗口，点击base组合框，在下拉菜单中选择AddressType。

现在，US-Address具有和AddressType一样的内容模型（如下图）。

7. 我们可以对US-Address的内容模型加以扩展：在其中添加一个邮政编码元素。具体做法是，右击US-Address，在上下文菜单中选择Add Child | Sequence。AddressType方框外将出现一个新的Sequnce容器（如下图），表明它是对该元素的一个扩展。

8. 右击Sequence容器，然后选择Add Child | Element来加入元素。
9. 将新创建的元素命名为Zip，然后按一下Tab键，把光标移到type字段的值域上。
10. 在下拉菜单（双击type字段的值域即可出现）中选择（也可以直接输入）xs:positiveInteger，然后以回车键确认。

现在，基于AddressType的复杂类型US-Address可以包含一个邮政编码元素了。

全局简单类型
与复杂类型US-Address 基于AddressType一样，我们也可以令一个元素基于某个简单类型。定义全局简单类型的优点与定义全局复杂类型一样：利于重用。要重用一个简单类型，必须将它定义为全局的。下面，您将为US states定义简单类型的内容模型。该简单类型将被作为其他元素的基准。

创建一个全局简单类型
要创建一个全局简单类型，需要先在全局成分列表中添加新的简单类型，然后为之命名，并定义其数据类型。具体步骤如下：

1. 首先切换到Schema概要视图。（如果您正处于内容模型视图中，则点击图标 [image] 既可。）
2. 点击全局成分列表左上角的 [image] 图标，然后在弹出菜单中选择SimpleType。
3. 将新添加的简单类型命名为US-State。
4. 以回车键确认。这样便创建了一个名为US-State的简单类型，我们可以在Components窗口中的simpleTypes下看到它。

5. 在Details窗口中（如下图），在restr字段的下拉菜单中选择（也可直接输入）xs:string。

现在，我们完成了一个名为US-State、数据类型为xs:string的简单类型的创建。我们可以在US-Address的内容模型中对它进行引用。

在内容模型中使用全局简单类型
在内容模型中可以用全局简单类型来定义成分的类型。我们将在US-Address的内容模型中用US-State来定义一个名为State的元素。具体步骤如下：

1. 在Schema概要视图中，点击US-Address左侧的 [image] 图标。
2. 右击下面那个Sequence容器，然后选择Add Child | Element来加入元素。
3. 输入State作为元素名称。
4. 按一下Tab键，将光标移到该元素的type字段的值域上。
5. 在组合框的下拉菜单中选择US-State，并以回车键确认。

现在State元素是基于简单类型US-State的了。

创建第二个基于 Address的复杂类型
下面我们来创建一个用于存放英国地址的全局复杂类型。我们将创建一个基于AddressType的复杂类型，然后将它扩展为符合英国的地址格式。步骤如下（详细步骤请参见前面US-Address的定义过程）：

1. 在Schema概要视图中，创建一个名为UK-Address并基于AddressType（base=AddressType）的复杂类型。
2. 在UK-Address的内容模型视图中，添加一个名为Postcode、类型为xs:string的元素。

现在，UK-Address的内容模型应是下面这样：

注：您在本节创建了全局简单类型和全局复杂类型，并将它们用于内容模型的定义。全局类型的优点是，它们可在多个定义中被重用。
上一页 首页 下一页

© 2005 Altova


引用一个全局元素

引用一个全局元素

本节，您将把局部定义的Person元素转换为一个全局元素（global element），并在Company元素中引用该全局元素。

1. 点击 [image] 图标（显示全部全局成分）切换到Schema概要视图。
2. 在Schema概要视图中，点击Company元素的 [image] 图标。
3. 右击Person元素，然后选择Make Global | Element。此时，Person元素框中将出现一个小箭头，表明该元素现在是对全局声明的Person元素的引用。可以在Details窗口中看到isRef字段现在处于选中状态。

4. 点击图标 [image] 以返回Schema概要视图。现在Person元素将出现在全局元素列表中。它同时也会出现在Components窗口中。

5. 在Components窗口中双击Person元素，将显示该全局元素的内容模型。

注意：可以看到这里的全局元素框中没有显示一个小箭头。这是因为，这里显示的是被引用的元素、而不是引用它的元素。只有引用别的元素的元素，其方框中才会显示一个小箭头。

注：

· 在内容模型视图中，引用全局元素的元素与被引用的全局元素显示有相同的名称。

· 一个全局成分声明并不描述该成分将在XML文档中出现的位置。而是仅描述一个内容模型。仅当在另一个成分中引用到该全局成分声明时，它在XML文档中的出现的位置才被指定。

一个全局声明的元素可在不同的位置被多次重用。复杂类型的元素与引用全局元素的元素不同。对于前者，元素名称与元素类型是彼此独立的；若要修改元素的内容模型，可以为元素指定另一个类型或修改被引用的复杂类型的内容模型。而对于后者，元素的名称和内容模型都必须与被引用元素的一致；因此要修改元素的内容模型就必须引用另一个全局元素，或对被引用全局元素的内容模型进行修改，但这样做的话，所有引用该全局元素的元素都将受到牵连。


属性和属性的枚举值

属性和属性的枚举值

本节，您将学习如何创建属性及属性的枚举值。

定义元素的属性

1. 在Schema概要视图中点击Person元素，使之获得焦点。
2. 在位于Schema概要视图下方的Attributes/Identity Constraints窗格中选择Attributes选项卡，点击 [image] 图标，然后在弹出菜单中选择Attribute。

3. 在Name域中输入Manager作为属性的名称。
4. 在Type组合框的下拉菜单中选择xs:boolean。
5. 在Use组合框的下拉菜单中选择required。

6. 用同样的方式创建一个具有Type=xs:boolean以及Use=optional的Programmer属性。

定义属性的枚举值
我们可以为属性定义一个或多个枚举值，以限定该属性只能在这些枚举值中取值。如果XML实例文档中的某个枚举类型属性的属性值超出其枚举值范围，那么该文档就不是有效的。我们将为Person元素的Degree属性创建枚举值。具体步骤如下：

1. 在Attribute选项卡中点击 [image] 图标，在弹出菜单中选择Attribute。
2. 输入Degree 作为属性名称，并选择xs:string作为其类型。
3. 选中属性Degree所在行，然后再Facets窗口中点击Enumerations选项卡（参见下面的截图）。

4. 在Enumerations选项卡中点击 [image] 图标。
5. 输入BA后以回车键确认。
6. 用同样的方法再添加两个枚举值：MA和PhD。
7. 点击Person左侧的 [image] 图标以查看其内容模型。

可以看到内容模型视图中显示出一个attributes方框。点击attributes方框左侧的“+”图标将列出为Person元素定义的所有属性。打开菜单项Schema Design | Configure view，可以通过其中的Display Attributes和Identity constraints选项来控制是否在内容模型视图中显示属性或唯一性约束。
8. 点击图标 [image] 以返回Schema概要视图。

保存已完成的XML Schema
您可以用您喜爱的名称来保存已完成的schema（File | Save as）。但我们建议您将该schema命名为AddressLast.xsd，因为在一个后面将要创建的XML文件中，我们将用文件名AddressLast.xsd来引用这里所创建的schema。在您以文件名AddressLast.xsd保存schema文件前，记住先将XMLSpy 2005中自带的AddressLast.xsd文件改为别的名称（比如改为AddressLast_original.xsd）。


Schema的导航及档案

Schema的导航及档案

您已经完成了XML Schema的创建，我们建议您对schema导航和schema档案做一些了解。本节将对它们进行介绍。

命令介绍
本节您将只用到Schema/WSDL视图。下面介绍您将会用到的命令：

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


Schema导航

Schema导航

本节将向您展示如何快捷地浏览Schema/WSDL视图。我们建议您逐一试用这些导航机制，以熟悉它们。

显示一个全局成分的内容模型
复杂类型（complex type）、元素（element）及属性组（element group）是具有内容模型的全局成分。可以通过下列方式查看它们的内容模型视图：

· 在Schema概要视图中点击全局成分名称左边的 [image] 图标。
· 在Schema概要视图或内容模型视图状态下，双击Components窗口中列出的元素、复杂类型或元素组（屏幕截图如下）。

如果您在Components窗口中双击了不具有内容模型的全局成分（比如简单类型、属性、属性组），那么该成分将以Schema概要视图显示出来（因为它们没有内容模型）。

Components窗口有两个选项卡：Type和By Namespace，这两个选项卡都支持上述双击方法的使用。

查看被引用的全局元素的定义
如果一个内容模型中含有被引用的全局元素，那么您可以通过以下方法查看该全局元素或它所包含成分的内容模型视图：按住Ctrl键，然后双击要查看的成分。

例如：在查看Company的内容模型时，您可以按住Ctrl键并双击Last 元素，这样Person的内容模型将被打开，其中Last元素处于选中状态，并且相关窗口中将显示该元素的有关特性（property）。

查看复杂类型的定义
复杂类型（complex type）通常在内容模型中被用作元素的类型。要在内容模型中直接查看某个复杂类型的定义，可以双击该复杂类型所在黄色方框左上角的名称（参见下图中光标所在位置））。

这将打开复杂类型的内容模型视图。

注：与查看被引用的全局元素所包含成分的定义一样，对于复杂类型，您也可以通过按住Ctrl键并双击它所包含的成分来查看该成分的定义。


Schema档案

Schema档案

XMLSpy 2005为XML Schema提供了HTML和Microsoft Word（MS Word）两种格式的详细档案（documentation）。您可以选择您希望在档案中记录的成分和档案的详细程度。在HTML和MS Word文档中相关的成分将被显示为超级链接。要生成MS Word档案，您必须在您的机器（或网络）上装有MS Word。

本节，您将为AddressLast.xsd XML Schema生成档案。步骤如下：

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

2. 在Output Format（输出格式）栏中选择HTML，然后点击OK。
3. 这时将弹出一个Save As（另存为）对话框，在其中选择档案文件的存放位置，并给出适当的文件名（比如AddressLast.html）。点击Save（保存）按钮。

所生成的HTML档案文档将出现在XMLSpy 2005的Browser视图中。档案头部列出了schema中的各个成分（每个都是一个超级链接），您可以点击链接以查看相应的成分。

上图显示了HTML格式的schema档案的第一页。如果其中含有来自其他schema的成分，那么也会为那些schema生成档案。

上图显示了一个复杂类型的档案信息。

上图显示了元素和简单类型的档案信息。

现在您可以尝试一下生成MS Word格式的Schema档案。所生成的Word文档将自动在MS Word中打开。要使用MS Word文档中的超级链接，只需在点击链接的同时按住Ctrl键即可。


创建一个XML文档

创建一个XML文档

本节，您将学会如何在XMLSpy 2005中创建并使用XML文档，以及如何使用XMLSpy 2005中的各种智能编辑功能。您在本节将完成以下任务：
· 根据AddressLast.xsd schema新建一个XML文档。
· 为元素指定类型，以扩展其内容模型。（如果在XML文档中使用了扩展的内容模型，而没有在相应的XML Schema中对内容模型作扩展，将会导致验证错误。）
· 在Grid视图和Text视图中利用智能输入助手插入元素及属性。
· 从XMLSpy 2005中复制XML数据到Microsoft Excel中；在MS Excel中添加新数据；然后把在MS Excel中修改过的数据复制回XML Spy2005。该功能可以在Grid视图的数据库/表格视图中使用。
· 用数据库/表格视图的排序功能对XML元素进行排序。
· 验证XML文档。
· 修改schema，以允许三位数的分机号码。

本节将用到的命令
本节，您将主要使用Grid视图和Text视图，其中有一个小节您会用到Schema/WSDL视图。下面介绍您将会用到的命令：

File | New。新建一个XML文件。

View | Text View.切换到Text视图。

View | 增强型Grid视图.切换到增强型Grid视图。

XML | Table | Display as Table.将某一层次上的多个同类型元素显示为表格形式。这种显示元素的视图叫做数据库/表格视图（Database/Table View）（或简称表格视图）。该图标用于在表格视图和普通的Grid视图间进行切换。

F7.检查文档的良构型（well-formedness）。

F8.根据关联的DTD或Schema验证（validate）XML文档。

打开相关联的DTD或XML Schema文件。


新建一个XML文件

新建一个XML文件

当您在XMLSpy 2005中新建XML文件时，您可以选择令该文件基于某个schema（DTD或XML Schema）。本节，您将新建一个基于AddressLast.xsd（即您在本教程前面部分已创建的那个schema）的XML文件。按如下步骤新建该XML文件：
1. 选择菜单项File | New。这时将出现一个对话框：

2. 在对话框中选择.xml XML Document然后点击OK确认。这时将出现一个提示，让您选择该XML文档是否要基于某个DTD或Schema。

3. 选择Schema，然后点击OK确认。接着将出现一个对话框，让您选择该XML文档基于的schema文件。

4. 您可以通过点击Browse或Window按钮来选择schema文件。点击Browser按钮用于在文件系统中定位文件，点击Window按钮用于在已创建的工程以及所有已打开文件中选择文件。用上述任一方式选择AddressLast.xsd文件，然后点击OK确认。这时主窗口中将出现新建的XML文档，其中已经包含了在AddressLast.xsd中定义的主要元素。
5. 进入增强型Grid视图。
6. 在Grid视图中单击任意一个元素以缩小选中范围（这样可以看得更清楚一些），如下图所示。

7. 点击Address旁的 [image] 图标，以查看其子元素（如下图所示）。


指定元素的类型

指定元素的类型

在Grid视图中显示的Address元素的子元素是由复杂类型AddressType所定义的（其内容模型如下图所示）。

但是我们希望使用一种特定的地址类型（美国的或英国的），而不是一种一般性的地址类型。您可以回忆起，在AddressLast.xsd中，我们通过扩展复杂类型AddressType为US-Address和UK-Address创建了全局复杂类型。US-Address的内容模型如下所示。

为了指定XML文档中的Address元素必须符合这两种扩展的Address类型（US-Address和UK-Address）中的一个，而不是仅仅符合一般的AddressType，我们必须为Address元素指定一种扩展的AddressType。具体步骤如下：

1. 右击Name 元素，然后在上下文菜单中选择Insert | Attribute。

这将为Address元素增加一个属性（attribute）字段。
2. 为该属性输入属性名xsi:type。
3. 按一下Tab键，将光标移到该字段的值域。这时将出现一个菜单（如下图所示），其中列出了可选的复杂类型。

4. 在列表中选择US-Address，然后以回车键确认。

注：前缀xsi使您可以在XML实例文档中使用一些由XML Schema规范所定义的专有元素与属性。在上面的例子中，您为Address元素指定了类型。更多相关信息，请参见XML Schema规范 。


在Grid视图中填入数据

在Grid视图中填入数据

现在您可以往XML文档里填入数据了。具体步骤是：

1. 双击Name 的值域（或使用箭头键移动到该域），输入US dependency，以回车键确认。

2. 用同样的方法为Street和City 输入相应的值（比如Noble Ave和Dallas）。
3. 单击Person 元素，然后按Del键删除该元素（我们将在下一节恢复这个元素）。此时，整个Address元素将被自动选中。
4. 点击Address 元素的任一子元素，以取消对整个Address元素的选择。（如下图所示）。


在Text视图中填入数据

在Text视图中填入数据

Text视图是对XML文件中的数据（data）和标记（markup）进行编辑的理想视图，因为它具有能感知DTD/XML Schema的智能编辑功能。

结构化编辑功能
Text视图还提供了许多结构化编辑功能，使得大段文本的编辑工作变得容易了许多。这些功能的列表如下，可以通过点击相应的图标来切换它们的开/关状态。

ic-txt-lines 打开/关闭行号标注。

ic-txt-expand-marg 打开/关闭树状标记。

ic-txt-book-margin 打开/关闭书签显示区。

ic-txt-bk-ins 插入/去除书签。

ic-txt-indent 打开/关闭缩进标注。

下图显示了当前XML文档在打开所有结构化编辑功能时的画面。为清楚明了起见，从现在起本教程中的Text视图将不再显示行号、缩进标注等。了解更多关于Text视图的信息，请参见后面的相关章节。

tut-txtv-home

在Text视图中编辑
为了解Text视图的功能，本节您将在Text视图中输入并编辑数据。按以下步骤进行：
1. 选择菜单项View | Text view，或直接点击主窗口底部的Text选项卡。现在您可以看到在文本格式下进行语法分色显示的XML文档。

2. 将文本光标移到Address元素的尾标签（end tag）之后，按回车键添加一个新行。
3. 在这里输入一个小于号“<”。这时将出现一个列表，其中列出了此处允许出现的所有元素（根据指定的schema）。由于这里仅允许出现Person元素，因此这里只列出了它一个元素。

4. 在列表中选择Person ,Person元素及其属性Manager将被插入。

5. 此时，文本光标定位在一个空的双引号“”中，按一下T键，下拉列表中的true将被选中。

按回车键将true插入当前光标位置。
6. 把光标移到行尾（也可以按一下End键），接着按一下空格键。这将打开一个下拉菜单，其中列出了此处允许出现的所有属性（attriubte）。Attributes窗口中也会用红色标出此处允许出现的属性。由于Manager属性已经出现过一次了，因此它在列表中呈灰色。

7. 用下箭头键移到Degree上，然后按回车键。 这时将出现另一个列表框，其中列出了这里可用的预定义枚举值（BA、MA和PhD）。

8. 用下箭头键移到BA上，然后按回车键。把光标移到行尾（也可以按一下End键），接着按一下空格键。现在，Attributes窗口中的Manager和Degree都已成为灰色的了。

9. 用下箭头键移到Programmer上，然后按回车键。

10. 按一下F 键，再按回车键。
11. 把光标移到行尾，输入大于号“>”。XMLSpy 2005将自动为您插入Person元素下应有的子元素。（注意：Title元素是可选的，它不会被自动插入。）被自动插入的元素都具有成对的首标签（start tag）和尾标签（end tag），但是内容为空。

尽管您可以现在（在Text视图中）输入Person的相关数据，但下面我们将切换到Grid视图，以展示在不同视图中进行文档编辑带来的灵活性。

切换到Grid视图
选择菜单项View | Enhanced Grid View或点击主窗口底部的Grid栏以切换到Grid视图。

现在我们来验证（validate）当前文档，并修正验证过程中发现的错误。


验证文档

验证文档

XMLSpy 2005可以进行两种XML文档的鉴定：

· 良构性（well-formedness）检查
· 有效性（validation）检查

检查良构性
一个XML文档如果具有正确配对的首尾标签、正确的元素嵌套、并没有错位或遗漏的字符（比如写一个实体时漏了后面的分号）等，那么它就是一个良构的（well-formed）XML文档。

要对当前文档进行良构性检查，您可以选择菜单项XML | Check well-formedness，或者点击 [image] 图标，也可以直接按F7键。主窗口底部将会出现检查结果，比如如果当前文档是良构的话，那么将提示This file is well-formed。

点击OK将关闭检查结果的提示。注意：良构性检查并不对XML文档在结构上是否符合相应的schema作校验，这是在有效性检查中进行的。

有效性检查
如果一个XML文档在结构和内容上符合某个schema的规定，那么该XML文档对于这个schema来说就是有效的（valid）。

要对当前文档作有效性检查，您可以选择菜单项XML | Validate，也可以点击 [image] 图标，或者直接按F8键。检查的结果将显示在主窗口底部，这里我们看到当前文档不是有效的。原因是Address元素中的City元素后少了一个元素。如果您打开schema文件，可以看到在复杂类型US-Address （即当前Address元素的类型，这是您通过xsi:type属性设定的）的内容模型中，City元素后必须要有一个Zip元素和一个State元素。

修正非有效的文档
进行有效性检查后，如果文档不是有效的，主窗口中存在问题的元素会被自动选中。这里被选中的是City元素。

现在我们看一下Elements窗口的Append栏（右上方）。可以看到，Zip元素的前面有一个感叹号，表明（对于一个有效的文档来说）该元素是当前状态下所缺少的元素。

下面来修正这一有效性错误：
1. 在Elements窗口的Append选项卡中，双击Zip元素。这将在City元素之后插入一个Zip元素。
2. 按一下Tab键，切换到Zip属性的值域。输入04812后以回车键确认。Elements窗口的Append栏中现在的显示表明当前状态下缺少一个State元素（因为它前面有一个感叹号）。如下图所示。

3. 在Elements窗口的Append栏中，双击State元素。按一下Tab键后输入Texas，以回车键确认。现在Elements窗口的Append栏中只有灰色的元素了，表明Address元素所需要的子元素已全部具备了。

完成文档并再次验证
现在离文档创建的完成还缺一个Person了，待文档完成之后我们将对它再次进行验证。下面：

1. 点击First元素的值域，输入Fred，然后按回车键。

2. 用同样的方法为Person元素的其他子元素（Last、PhoneExt、Email）输入数据。注意：PhoneExt元素的值必须是一个不超过99的整数（因为在schema中是这么定义的）。将数据输入之后的文档将如下图所示。

3. 点击主窗口底部的Revalidate 按钮再次进行验证，我们可以看到主窗口底部出现“This file is valid”的提示。

4. 现在，当前XML文档对于其schema来说是有效的。点击OK以关闭验证结果的提示。
5. 选择菜单项File | Save，然后为您的XML文档取一个合适的文件名（比如CompanyFirst.xml）。注：由于Tutorial文件夹中已经有一个根据本教程创建好的CompanyFirst.xml文件，因此请注意不要覆盖这个文件。

注：一个非有效的XML文档也可以存盘。但是在您保存一个非有效的XML文档时，在主窗口底部会出现提示。您可以选择Save anyway，以保存该非有效的XML文档。


在Grid视图中添加元素和属性

在Grid视图中添加元素和属性

目前，文档中仅有一个Person元素。要新添一个Person元素，请按下列步骤执行：

1. 点击Address 元素左侧的边条（sidebar），将其折起。这样Grid视图会显得更加简洁。
2. 在Grid视图中，点击Person元素的标题（即“Person”文字）以选中整个Person元素。可以看到，现在Person元素在Elements窗口的Append选项卡中是可用的。

3. 在Elements窗口的Append选项卡中双击Person元素，这将在已有的Person元素后新添（append）一个Person元素，而Person应包含的子元素也将自动生成（见下图）。（注意：由于Title元素是可选的，因此它没有被自动插入。）

4. 点击新添Person元素的Manager属性。看一下Attributes窗口。由于Manager属性已经出现过一次了，因此现在它在列表中呈灰色。再看一下Info窗口（缺省在主窗口左侧），可以看到其中列出了Manager属性的有关信息。
5. 在Attributes窗口的Append选项卡中，双击Programmer，Manager属性后将插入一个空的Programmer属性。

现在，Attributes窗口中的Programmer也变为灰色的了。

虽然现在您也可以在当前普通Grid视图中为新添的Person元素输入内容，但我们希望切换到Grid视图的数据库/表格视图，因为那里更适于编辑多条结构相同的数据（比如这里的Person元素）。


在数据库/表格视图中编辑文档

在数据库/表格视图中编辑文档

Grid视图包含一种特殊的视图，叫做数据库/表格视图（后面将简称为表格视图），它特别适用于编辑多个具有相同结构的元素。在表格视图中，元素类型相同的一组元素将以表格的形式显示出来。表中各列为元素的各个属性或子元素，表中各行对应于各个元素。

要把一组同类型的元素切换到表格视图，您可以选中该组元素中的任何一个，然后点击工具条上的 [image] 图标（对应于菜单项XML | Table | Display as table）。进入表格视图后，这组同类型的元素将被显示为一个表格。所有与选中元素相邻的同类型元素都将出现在表格中。表格视图仅在增强型Grid视图中可用，它可用于编辑任何一种XML文件（如XML、XSD、XSL等）。

表格视图的优点
表格视图具有以下优点：

· 您可以拖放一列的标题，以改变其（在表格中和在XML文档中的）相对位置。这意味着，实际文档中的子元素或属性的相对位置也将随表格中的位置变化而发生变化。
· 选择菜单项XML | Table | Ascending Sort或Descending Sort即可对表格中的任一列进行排序（升序或降序）。
· 要在表格中新增的一行（即添加一个元素），使用菜单项XML | Table | Insert Row即可。
· 您还可以把整个表格复制到其他应用程序中，或把其他应用程序中的表格复制过来。
· 表格视图中也有智能编辑功能。

以表格形式显示一个元素类型
要以表格形式显示Person元素类型，需要这几个步骤：

1. 在Grid视图中，选中任何一个Person元素（在文字“Person”上（或附近）点击一下即可）。

2. 选择菜单项XML | Table | Display as table，或点击 [image] 图标。这样，所有相邻的Person元素将被显示于一个表格中。表格中各列的标题是Person元素的子元素或属性名称，而各行显示的是这些子元素和属性在各个Person元素中的值。

3. 选择菜单项View | Optimal widths或点击 [image] 图标，令各列具有最佳宽度。

注：要使一个元素类型退出表格视图，只需在选中该元素类型的表格（在表格左上角的元素名称上点击一下即可），然后点击 [image] 图标即可。注意：如果表格中含有处于表格视图的子元素，那么当上层元素退出表格视图后，子元素仍将保持表格视图。

在表格视图中输入数据
要为第二个Person 元素输入数据，只需双击第二行中的各个单元格，然后输入数据即可。注意：若要构建有效的文档，则PhoneExt的值必须是不大于99的整数。在单元格中，智能编辑功能将发挥作用。如果所在单元格具有可选值列表的话（比如Degree属性的枚举值列表、布尔类型的true/false等），您可以在该列表中选择要插入的值。

注：在表格中也可以使用输入助手（比如Elements窗口、Attributes窗口等）。例如，在Elements的Append选项卡中双击Person，将在表格中新增一行（即添加一个Person元素）。

与其他应用程序交换XML数据
在XMLSpy 2005中，您可以在XML文档与其他应用程序之间交换表格型数据（即把一处的表格复制到另一处使用）。被交换的数据在XMLSpy 2005中被作为XML数据处理，而在其他应用程序中被作为那里所采用的格式处理。下面，您将学会如何与Excel数据表交换数据。请按以下操作：

1. 点击行标1，按住Ctrl键，然后点击行标2。这样便选中了表格中的两行。

2. 选择菜单项Edit | Copy as Structured text，把所选行复制到系统剪贴板中。
3. 打开Microsoft Excel，将所复制的数据粘贴（Ctrl+V）到一个Excel工作表中。

4. 在Excel中添加一行数据，令PhoneExt元素的值为一个三位整数（比如444）。

5. 选中Excel工作表中的数据行，然后选择Edit | Copy以将数据复制到系统剪贴板中。
6. 切换回XMLSpy 2005。
7. 点击位于表格中第一行第一列的单元格，然后选择菜单项Edit | Paste。

8. 这将会用Excel中的数据替换现有表格中的数据。
9. 由于在Excel中true/false被自动更改为大写，您可以通过使用菜单项Edit | Replace (Ctrl+H)将复制回表格视图中的大写的TRUE/FALSE改回小写。

按列对表格进行排序
您可以在表格视图中根据任一列进行升序或降序排序。比如，我们现在要根据last name对Person表进行排序。我们可以这样做：

1. 点击Last列的标题以选中整列（表明排序范围为所有的Person）。

2. 选择菜单项XML | Table | Ascending sort或者点击 [image] 图标。现在整个表格随着Last列按字母顺序排列了。Last列仍处于选中状态。

XML文档也会随着表格显示的变化而自动更新。也就是说，Person元素的顺序将根据它们的Last子元素的值按字母顺序排列。（您可以点击Text选项卡看到这一结果）
3. 选择菜单项XML | Validate或按F8键。此时，主窗口底部将出现一条错误信息，提示有一个PhoneExt元素的内容不符合maxInclusive="99"的限制。有问题的PhoneExt元素会被加亮显示。

由于我们为电话分机号码设定的值范围不能覆盖我们给出的分机号，我们必须对XML Schema作相应的修改。我们将在下一节完成这一工作。


修改schema

修改schema

由于两位数的电话分机号码不能涵盖一些常例，我们需要对它加以扩展以允许三位数的分机号码。现在我们来修改XML Schema。在修改XML Schema的过程中，您不必关闭正在编辑的其他XML文档。步骤如下：

1. 选择菜单项DTD/Schema | Go to definition或点击 [image] 图标，打开当前文档对应的schema（本例中为AddressLast.xsd）。切换到Schema/WSDL视图（如图）。

2. 点击全局元素Person左侧的 [image] 图标，然后选中PhoneExt元素。现在，Facets窗口中将显示出有关PhoneExt元素的限制。

3. 在Facets窗口的Facets选项卡中，双击maxIncl的值域，然后将99改为999，最后以回车键确认。

4. 保存schema文档。
5. 通过快捷键Ctrl+Tab切换到XML文档。

5. 点击Revalidate按钮，重新验证XML文档。

现在，我们可以在主窗口底部看到“This file is valid”的提示，表明XML文档是符合它所对应的schema的。
6. 选择菜单项File | Save As...，将当前XML文档以CompanyLast.xml存盘。


使用XSLT转换XML

使用XSLT转换XML

目标
使用XSL样式表把XML文档转换为HTML文档。应当注意的是，“转换（transformation）”并不是把XML文件变为另一个文件；而是生成一个新的输出文件。“转换”一词是习惯用法。

方法
要进行转换，请按下列步骤进行：

· 为XML文档指定一个预先写好的Company.xsl文件。
· 在两个内置的Altova XSLT引擎中选用一个执行转换。(见下)

本节将用到以下命令：

XSL/XQuery | Assign XSL，用于为当前XML文档指定XSL文件。

 XSL/XQuery | Go to XSL，打开当前XML文档所引用的XSL文件。

 XSL/XQuery | XSL Transformation (F10)，使用相关联的XSL文件对XML文档进行转换。如果您还没有为当前文档指定XSL文件，那么在您使用本命令时会被提示选择一个XSL文件。

注：XMLSpy 2005有两个内置的XSLT引擎：Altova XSLT 1.0引擎和Altova XSLT 2.0引擎。Altova XSLT 1.0引擎用于执行XSLT 1.0样式表，Altova XSLT 2.0引擎用于执行XSLT 2.0样式表。XMLSpy 2005会根据XML文档中的xsl:stylesheet属性或xsl:transform元素为您自动选择正确的引擎。由于本教程中所使用的均为XSLT 1.0样式表，因此在将它们用于执行XSL Transformation命令时，会自动选用Altova XSLT 1.0引擎。


指定一个XSL文件

指定一个XSL文件

下面我们为CompanyLast.xml文件指定一个XSL文件：
1. 在主窗口底部点击CompanyLast.xml，使之成为当前活动文档。
2. 选择菜单项XSL/XQuery | Assign XSL。
3. 在弹出的对话框中，通过点击Browse按钮定位到<XMLSpy 2005安装目录>\Examples\Tutorial\文件夹中的Company.xsl文件。该对话框中有一个选项“Make Path Relative to CompanyLast.xml”。如果它被选中的话，当前XML文档将通过相对路径来引用被选定的XSL文件。

4. 点击OK键完成XSL文件的指定。

可以看到，XML文档中添加了一条XML-stylesheet处理指令（processing instruction），用于引用被指定的XSL文件。如果您选择了“Make Path Relative to CompanyLast.xml”选项，那么这里使用的是相对路径；否则，就是绝对路径（如图中所示）。


转换XML文件

转换XML文件

要用XSL文件来转换XML文档，您需要按以下步骤执行：

1. 确保XML文件是当前文档。
2. 选择菜单项XSL/XQuery | XSL Transformation (F10) 或点击 [image] 图标。这时，XML文档中所引用的XSL样式表将被用于进行转换。（由于Company.xsl文件是一个XSLT 1.0文档，因此XMLSpy将自动使用内置的Altova XSLT 1.0引擎进行转换。）输出文档将在Browser视图中显示，它具有文件名XSL Output.html。Browser视图中，上面是居左对齐显示的Company数据，下面是以表格形式显示的Person数据。

注：如果您看到的表格只有表格标题、而没有数据的话，请确保您已经为schema定义了目标命名空间（target namespace）（详见定义命名空间）。Schema、XML和XSL中所使用的命名空间必须相同。


修改XSL文件

修改XSL文件

您可以修改XSL文档以获得不同的输出结果。比如，下面我们把HTML输出中的表格背景色从浅绿色换为黄色。具体做法为：

1. 点击CompanyLast.xml选项卡，使之成为当前文档，然后进入Grid视图。
2. 选择菜单项XSL/XQuery | Go to XSL。

这将打开XML文档中所引用的Company.xsl文件。
3. 找到下面这行：<table border="1" bgcolor="lime">，把其中的bgcolor="lime"改为bgcolor="yellow".

4. 选择菜单项File | Save以保存对当前XSL文件的修改。
5. 再次点击CompanyLast.xml选项卡，使之成为当前文档，然后选择菜单项XSL/XQuery | XSL Transformation，或直接按F10键。这样，Browser视图中将显示出新的XSL Output.html文件。可以看到，现在的表格具有黄色的背景。

6. 选择菜单项File | Save，将当前XML文档以Company.xml存盘。


使用数据库

使用数据库

本节的目标：
从XML文件中导出Person数据到MS Access 2000或MS Access 2003中，然后再从MS Access中将数据导回XMLSpy 2005。

· 您可以通过使用Convert菜单项来完成上述目标。

本节将用到的功能：

Convert | Export to Text files / Database，使您能够将XML数据导出为文本文件或导出到第三方数据库中。

Convert | Import Database data，使您能够将数据库中的数据导入XMLSpy 2005中。

上一页 首页 下一页

© 2005 Altova


将XML数据导出到外部数据库中

将XML数据导出到外部数据库中

将数据导出到数据库中：
1. 点击主窗口底部的CompanyLast.xml选项卡，将它作为当前文档。
2. 选择菜单项Convert | Export to Text files / Database...。

import-db-dat

3. 点击Convert database data to XML单选按钮，然后点击OK确认。
对话框中的缺省设置是导出所有的元素和属性，并生成主键和外键。

4. 点击Export to Database按钮。

此对话框让您选择是要创建一个新的Access表（table）、还是把数据导出到一个现有的表中，或者导出到第三方数据库中。namespace option栏的缺省选择为“Exclude Namespace”。
5. 点击Create a new Microsoft Access database，然后点击OK确认。
6. 在“Save as...”对话框中为新数据库输入文件名（比如Company.mdb），然后点击Save按钮。
此时将出现一个导出进度条，当导出完成后会出现一个消息框。点击OK确认。
7. 打开您刚刚保存的Company.mdb文件。可以看到，导出过程自动创建了一个包含所有被导出元素的表。

8. 双击Person图标，打开Person表。
表中显示了XML文件中的全部Person数据，并包含了“自动生成的字段”PrimaryKey和ForeignKey（用于对数据库中的数据进行索引）。

请注意：
如果您在导出数据库中的数据时选择了“Create a new Microsoft Access database”，那么XMLSpy 2005将会创建一个新的Access 2000数据库！

如果您要把数据导出到一个现有的Access 97数据库中，那么请在Destination database栏中选择“Choose an existing Microsoft Access database”。在从Access数据库中导入数据是没有任何限制。


导入数据库数据

导入数据库数据

要将数据导入XMLSpy 2005：
1. 选择菜单项Convert | Import Database data...。
这时将出现“Import database data”对话框。

import-db-dat

2. 点击Convert database data to XML单选按钮，然后点击OK确认。
“Select a Source Database”对话框出现。

db-generic1

2. 选择Microsoft Access (ADO)，然后点击Next。“Select a MS Access Database”对话框出现。
3. 点击Browse按钮，然后定位到Company.mdb文件。点击Next按钮。这时将出现“Import database data”对话框。

4. 点击Choose database table按钮，选择Person，然后点击OK。这时，文本框中将出现一条SELECT语句：SELECT * FROM [Person]。
5. 点击Preview按钮，这样底部窗格中将显示SELECT语句所选的数据视图。

对导入字段的处理：作为属性、作为元素或者跳过
缺省情况下，所有字段都将以元素导入XML文件。您可以在预览窗口中为每个字段指定一个XML结点类型（元素或属性），或者指定不要导入。可以反复点击元素名称左边的符号（ [image] 或 [image] 或 [image] ）在下列选项间切换：

将字段作为元素导入。
将字段作为属性导入。
跳过，即不要导入该字段。

现在，我们来为各个字段指定XML结点类型（或选择不导入）。具体步骤如下：

1. 反复点击PrimaryKey列的符号直到出现跳过符号为止。对ForeignKey作同样的处理。
2. 反复点击Degree列的符号直到出现属性符号为止。对Manager和Programmer列作同样的处理。

3. 点击Import按钮，开始导入过程。XMLSpy 2005将创建一个包含Person表数据的XML文件。其中，文档元素的名称为Import，而各个Person表被导入为一个Row元素。

点击Text选项卡，您可以在Text视图中看到导入后的数据。

更多信息请参见用户参考手册中Menus | Convert Menu.下的导入数据库数据（Import DB data）部分。


根据数据库表结构创建相应的schema

根据数据库表结构创建相应的schema

您可以在XMLSpy 2005中根据外部的数据库文件来创建一个schema。XMLSpy 2005支持许多工业标准（如ADO、ODBC兼容的数据库等）。

本节的目标：
根据一个现有的MS Accesss数据库生成相应的、具有相同表结构的schema文件。

· 您可以通过使用菜单项Convert | Create XML Schema from DB Structure 来完成上述目标。
· 本节，我们将用DB2Schema.mdb文件作为例子。DB2schema.mdb文件的关系视图可以使用MS Access中的菜单项Tools | Relationships来观看。


数据库表结构到schema的转换

数据库表结构到schema的转换

要根据一个数据库文件创建schema：
1. 选择菜单项Convert | Create XML Schema from DB Structure，出现“Select a Source Database”对话框。

2. 选择Microsoft Access (ADO)，然后点击Next。

3. 点击Browse按钮，然后定位到Examples\Tutorial文件夹中的DB2schema.mdb文件。这时文件名DB2schema.mdb将显示在对话框中。

db2s-acc2

4. 点击Next按钮，出现Create Schema对话框。您可以在其中选择对那些表（table）进行转换，以及其他与schema相关的选项。

5. 在Database Tables窗格中，点击Select All按钮，选中全部数据表。被选中的表将在Selected Tables窗格中显示出来。
6. 点击Create Schema按钮开始进行转换。自动生成的schema将用Schema/WSDL设计视图打开。
7. 在主窗口下方窗格的“Identity constraints”选项卡里可以看到各元素的keyref和key属性。
8. 点击全局成分Altova左边的 [image] 图标查看其内容模型。

db2s-acc5

9. 选择菜单项File | Save as，将生成的schema保存为DB2schema.xsd。
10. 点击 [image] 图标回到Schema概要视图。

目前支持key和keyref的数据库：
目前，MS Access和几种其他数据库可以自动提供key和keyref信息。

其他数据库：将数据库结构转换为XML Schema
对于除MS Access以外的数据库，转换过程为分两步：

· 创建数据库的连接字符串
· 选择要转换的数据库表

关于转换的详细信息，请参见用户参考手册中Menus | Convert下的根据数据库结构创建XML Schema部分。
上一页 首页 下一页

© 2005 Altova


工程管理

工程管理

本节向您介绍XMLSpy 2005的工程管理功能。在了解将XML文件组织为工程的优点之后，我们会把先前已创建的文件组织到一个工程中。


工程的优点

工程的优点

将XML文件组织为工程具有以下优点。
· 可以根据扩展名或其他条件将文件和URL归类到不同的文件夹中。
· 可对指定的文件夹或工程作批处理。
· 可为文件夹指定一个统一的DTD或XML Schema，这样该文件夹里的文件都将根据该文件进行验证。
· 可为文件夹指定一个XSLT文件，这样该文件夹中的XML文件都将应用被指定的XSLT进行转换。
· 可为文件夹指定一个存放XSL转换结果的文件夹。

上述工程设置可以通过使用菜单项Project | Project Properties...进行设置。在下一节中，您将通过Project菜单创建一个工程。

另外，XMLSpy 2005还具有以下高级项目功能：

· 可以通过菜单项Project | Source control | Add to source control...对XML文件进行源代码控制。（详见源码控制部分。）
· 可在工程中添加个人、网络或Web文件夹，它们可以进行批量验证。


建立一个工程

建立一个工程

如果您是从本教程的开头一直学习到现在的话，那么现在应该已经创建了不少文件了。

您可以将它们组织到一个工程中。首先，您要创建一个工程，然后把你在本教程学习过程中创建的文件加入正确的工程子文件夹即可。

创建一个简单的工程
要新建一个工程，您需要：

1. 选择菜单项Project | New Project。这样，Project窗口中将出现一个名为New Project的工程。其中包含一些根据常见的XML文件类型预先建立的文件夹（如图）。

2. 点击主窗口底部的CompanyLast.xml选项卡。
3. 选择菜单项Project | Add active and related files to project。这样两个文件被加入工程中：CompanyLast.xml和AddressLast.xsd。注意：通过处理指令（Processing Instrcutions）引用的文件（比如XSLT文件）不属于相关文件的范畴，因此不会被加入到项目中。
4. 选择菜单项Project | Save Project，以名称Tutorial保存该工程。

Adding files to the project
您也可以将其他文件加入到工程中。步骤如下：

1. 打开任何一个除CompanyLast.xml以外的已打开的XML文件（具有.xml扩展名的），并使之在主窗口中显示。
2. 选择菜单项Project | Add active and related files to project。由于该.xml文件具有扩展名.xml，因此被加入到XML Files文件夹中。
3. 以同样的方式把一个HTML和一个XSD文件（比如说Company.html和DB2schema.xsd文件）加入工程中。它们各自将被加入到HTML Files和DTD/Schema文件夹中。
4. 选择菜单项Project | Save Project，或者选择选中Project窗口中的任一文件夹或文件后点击工具条上的Save图标（或File | Save）保存该工程。

注：往工程中添加文件的另一个途径是，鼠标右击一个工程文件夹，然后在上下文菜单中选择Add Active File把当前文件加入该文件夹。

其他有用的命令
下面给出一些在工程中常用的命令：

· 要在工程中新建一个文件夹，选择菜单项Project | Add Project folder to Project，然后输入文件夹名称。
· 要把一个文件夹从工程中删除，右击该文件夹，然后在上下文菜单中选择Delete。
要把一个文件从工程中删除，选中该文件然后按Delete键。

上一页 首页 下一页

© 2005 Altova


教程结束

教程结束

祝贺，您已完成XMLSpy 2005的教程！谢谢！

我们希望本教程有助于您了解XMLSpy 2005的基本功能。本教程的PDF版可在您的XMLSpy 2005程序安装目录中获得（文件名为tutorial.pdf）。如果您需要了解更多，请使用上下文敏感的在线帮助系统。