简介
IBM 的 WebSphere? Studio Application Developer 是一种新的应用程序开发产品,它支持用 JSP?、servlet、HTML、XML、Web 服务、数据库和 EJB 等不同的技术构建多种应用程序。本文是这个系列的第一篇文章,将关注于 Application Developer 提供的 XML 工具。本文讨论 XML Schema Editor。XML Schema Editor 是一个可视化工具,它支持构建符合“XML Schema 建议书规范(XML Schema Recommendation Specification)”(2001 年 5 月)的 XML Schema。想得到关于 XML Schema 的更多信息,请访问 W3C XML Schema网站。
创建一个简单的 XML Schema
在本节中,我们将为一所大学创建一个新的 XML Schema。要从头创建新的 Schema,请按下列步骤使用 New XML Schema 向导:
- 选择 Perspective => Open => Other => XML以切换到 XML 视图。
- 选择 File => New => Project => Simple => Project以打开 New Project 向导来创建一个简单的项目。我们可以把这个项目称为 XMLProject。
- 选择 File => New => XML Schema以启动 New XML Schema 向导。
- 在 File name 字段中输入
University.xsd
。 - 单击 Finish。此时
University.xsd
文件已经创建并且 XML Schema Editor 已经为您自动打开。
图 1. XML Schema Editor
XML Schema Editor 有三个主视图:Outline 视图、Design 视图和 Source 视图。可以使用 Outline 视图在模式中添加、除去或重排组件。当在 Outline 视图中选择一个对象时,Design 视图会显示与该模式组件对象相关联的特性。可以使用 Design 视图输入选中对象的值。可以切换到 Source 视图直接编辑模式源代码。XML Schema Editor 还使用工作台中的 Task 视图进行错误报告。
使用 Outline 视图添加模式组件
XML Schema 规范定义了大量的组件,如 schema、complexType、simpleType、group、annotation、include、import、element 和 attribute 等等。要创建一个有效的模式,您必须理解这些组件之间的包含关系。例如,annotation 元素只能作为任一元素的第一个子元素出现。include、import 或 redefine 元素必须在模式元素的任何其它子元素之前出现。attribute 只能添加到复合类型,而不是简单类型。只能在模式级别上定义 group,但 group 可以被复合类型引用,等等。
XML Schema Editor 使您不必记住所有这些细节。您可以在 Outline 视图中通过弹出菜单添加模式组件。弹出菜单只会显示与选中的对象相关的对象列表。它还会在 XML Schema 中的正确位置添加对象。以下教程将教您一些基本方法。
图 2. 模式文件级别的弹出菜单
第 1 步:添加一个复合类型和一个简单类型
University.xsd
文件包含一个用来定义学生信息的复合类型 Student 和一个用来列出大学的院系的简单类型 Faculties。
- 在 Outline 视图中,单击 University文件对象,然后从弹出菜单中选择 Add Complex Type。这将创建一个名为 New_ComplexType1的新复合类型。在 Design 视图中,将该名称改为 Student。
- 再次单击 University文件对象,然后选择 Add Simple Type。这将创建一个名为 New_SimpleType1的新简单类型。在 Design 视图中,将该名称改为 Faculties。
第 2 步:向复合类型添加内容
学生类型中包含该学生的姓名、专业及其标识。通过完成下列步骤,我们将把该信息添加到 Student 复合类型中:
- 单击 Student复合类型,然后选择 Add Content Model。这将创建一个新的序列对象,在 Outline 视图中由“,”图标表示。
- 单击 sequence(,)对象,然后从弹出菜单中选择 Add Element。这将创建一个名为 New_Element1 的新元素。在 Design 视图中,将该元素名称改为 name。请注意此元素的类型缺省为 string。
- 单击 sequence(,)对象,然后再次选择 Add Element以添加元素 major。在 major元素的 Design 视图中,通过选择单选按钮 User-defined simple type,将元素的类型改为简单类型 Faculties。
图 3. 将元素类型改为用户定义的简单类型
请注意这个简单类型 Faculties 的前缀被设置为 University。这是引用此模式中类型的缺省前缀。我们将在 下面讨论目标名称空间和名称空间前缀。
- 单击 Student复合类型。选择 Add Attribute以添加属性 id。在 id的 Design 视图中,将 id的类型改为整数。
第 3 步:向简单类型添加枚举元素
简单类型 Faculties 是从简单类型 String 的约束派生而来,并且它的值被限制为大学的某一个院系。要定义这个列表,我们按下列方法创建枚举元素:
- 单击 Faculties简单类型,选择 Add Restriction。这将创建一个基本类型为 String 的新的 restriction元素。
- 单击 restriction对象然后选择 Add Enum。这将创建一个新的枚举元素。在 Design 视图中,将它的值改为 science。
- 重复向简单类型 Faculties 添加枚举元素 arts和 dentistry。
第 4 步:添加全局元素
要从这个 XML Schema 创建一个文档实例,XML Schema 必须要有一个全局元素。我们将如下添加一个全局元素 student:
- 单击 University文件对象,然后从弹出菜单选择 Add Global Element。这将创建一个名为 New_GlobalElement1的新全局元素。在 Design 视图中,将该名称改为 student。
- 单击 student全局元素。在 student全局元素的 Design 视图中,通过选择 User-defined complex type单选按钮将它的类型改为复合类型 Student。
完成后的模式在 Source 视图中的显示如下面的图 4 所示。
图 4. 完成后的 University.xsd 模式
进行更改和引用完整性
当模式变得更大、更复杂时,就会有更多的类型定义和对这些类型的引用。那么,如果在定义了一种类型并创建了十个对该类型的引用以后,当要更改该类型的名称时,会有什么发生呢?XML Schema Editor 有一个内置的引用完整性机制来自动传播这种更改,把您从这种单调乏味且容易出错的手工更新任务中解放出来。下面演示这种特性:
在我们的 University.xsd
文件中,我们已经定义了一个名为 Faculties 的简单类型。在复合类型 Student 中有一个对该类型的引用。假设我们想