IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  WebSphere  >

XML 和 WebSphere Studio Application Developer,第 1 部分:开发 XML Schema

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Christina Lau (clau@ca.ibm.com), 高级技术部成员, IBM 多伦多实验室

2001 年 11 月 01 日

 

© Copyright International Business Machines Corporation 2001. All rights reserved.

简介

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 向导:

  1. 选择 Perspective => Open => Other => XML以切换到 XML 视图。
  2. 选择 File => New => Project => Simple => Project以打开 New Project 向导来创建一个简单的项目。我们可以把这个项目称为 XMLProject
  3. 选择 File => New => XML Schema以启动 New XML Schema 向导。
  4. File name 字段中输入 University.xsd
  5. 单击 Finish。此时 University.xsd 文件已经创建并且 XML Schema Editor 已经为您自动打开。

图 1. XML Schema Editor
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。

  1. 在 Outline 视图中,单击 University文件对象,然后从弹出菜单中选择 Add Complex Type。这将创建一个名为 New_ComplexType1的新复合类型。在 Design 视图中,将该名称改为 Student
  2. 再次单击 University文件对象,然后选择 Add Simple Type。这将创建一个名为 New_SimpleType1的新简单类型。在 Design 视图中,将该名称改为 Faculties

第 2 步:向复合类型添加内容

学生类型中包含该学生的姓名、专业及其标识。通过完成下列步骤,我们将把该信息添加到 Student 复合类型中:

  1. 单击 Student复合类型,然后选择 Add Content Model。 这将创建一个新的序列对象,在 Outline 视图中由“,”图标表示。
  2. 单击 sequence(,)对象,然后从弹出菜单中选择 Add Element。这将创建一个名为 New_Element1 的新元素。 在 Design 视图中,将该元素名称改为 name。请注意此元素的类型缺省为 string
  3. 单击 sequence(,)对象,然后再次选择 Add Element以添加元素 major。在 major元素的 Design 视图中,通过选择单选按钮 User-defined simple type,将元素的类型改为简单类型 Faculties。

图 3. 将元素类型改为用户定义的简单类型
将元素类型改为用户定义的简单类型

请注意这个简单类型 Faculties 的前缀被设置为 University。这是引用此模式中类型的缺省前缀。我们将在 下面讨论目标名称空间和名称空间前缀。

  1. 单击 Student复合类型。选择 Add Attribute以添加属性 id。在 id的 Design 视图中,将 id的类型改为整数。

第 3 步:向简单类型添加枚举元素

简单类型 Faculties 是从简单类型 String 的约束派生而来,并且它的值被限制为大学的某一个院系。要定义这个列表,我们按下列方法创建枚举元素:

  1. 单击 Faculties简单类型,选择 Add Restriction。这将创建一个基本类型为 String 的新的 restriction元素。
  2. 单击 restriction对象然后选择 Add Enum。这将创建一个新的枚举元素。在 Design 视图中,将它的值改为 science
  3. 重复向简单类型 Faculties 添加枚举元素 artsdentistry

第 4 步:添加全局元素

要从这个 XML Schema 创建一个文档实例,XML Schema 必须要有一个全局元素。我们将如下添加一个全局元素 student

  1. 单击 University文件对象,然后从弹出菜单选择 Add Global Element。这将创建一个名为 New_GlobalElement1的新全局元素。在 Design 视图中,将该名称改为 student
  2. 单击 student全局元素。在 student全局元素的 Design 视图中,通过选择 User-defined complex type单选按钮将它的类型改为复合类型 Student。

完成后的模式在 Source 视图中的显示如下面的图 4 所示。

图 4. 完成后的 University.xsd 模式
完成后的 University.xsd 模式





回页首


进行更改和引用完整性

当模式变得更大、更复杂时,就会有更多的类型定义和对这些类型的引用。那么,如果在定义了一种类型并创建了十个对该类型的引用以后,当要更改该类型的名称时,会有什么发生呢?XML Schema Editor 有一个内置的引用完整性机制来自动传播这种更改,把您从这种单调乏味且容易出错的手工更新任务中解放出来。下面演示这种特性:

在我们的 University.xsd 文件中,我们已经定义了一个名为 Faculties 的简单类型。在复合类型 Student 中有一个对该类型的引用。假设我们想把这个简单类型改名为 Faculty。

  1. 切换到 Design 视图。
  2. 在 Outline 视图中选择 Faculties简单类型。在 Design 视图中将它改为 Faculty。
  3. 现在切换到 Source 视图。请注意元素 major的类型是如何自动变为 University:Faculty 的。

XML Schema Editor 的参考完整性机制不仅限于名称更改。删除模式组件时,会应用相同的规则。例如,如果删除某类型,那么所有对该类型的引用都被自动重置复位为缺省 String 数据类型。无论何时发生这种自动更新,在 Task 视图中会显示一条信息。如果您要改变主意,则始终可以撤销操作。

要注意的是,这种内置的参考完整性机制只有在 Design 视图中作更改时才会实施。 如果您直接通过在 Source 视图中输入进行直接修改,那么确保正确地进行了所有更改就是您的责任了。在 Source 视图中作的任何更改都会自动在 Design 视图和 Outline 视图中反映出来。





回页首


名称空间

名称空间提供了一种标识元素或属性来源的方法。例如,两个来自不同模式的元素可能有相同的名称(比如 Product)。为了标识它们,假设 A 公司的 Product 与 B 公司的 Product 比较,则我们可以用 XML 名称空间机制来区别他们。

本节提供了关于如何在 XML Schema Editor 中为模式定义名称空间的简单介绍。在后续文章中,我们将讨论名称空间设计的全部主题,因为它涉及到创建实例文档以及通过 include、import 或 redefine 元素使用其它模式的构造。

University.xsd 模式中,目标名称空间是 http://www.ibm.com。这由模式元素中的 targetNamespace 属性指出。这意味着所有在这个模式中定义的类型都属于目标名称空间 http://www.ibm.com

模式元素中的下面这行定义了这个目标名称空间的前缀 University

xmlns:University="http://www.ibm.com"

要引用在这个模式中定义的类型,必须使用这个已被定义的前缀。参考上面图 4 中的源代码,注意元素 major和元素 student是如何如下所示引用这个类型的:

<element name="major" type="University:Faculties"/>
<element name="student" type="University:Student"/>




回页首


更改名称空间前缀和目标名称空间

如果想更改模式的名称空间前缀或者目标名称空间,可以使用 Design 视图做这件事。下面演示这一特性:

  1. 选择文件对象,也就是 University
  2. 在 Design 视图中,将 Prefix字段改为 univ。
  3. 在 Design 视图中,将 Target namespace字段改为 http://www.utoronto.ca
  4. 因为这种更改对整个文档有全局性影响,所以必须按 Apply按钮以进行全局更改。
  5. 切换到 Source 视图。您会注意到该模式元素的属性和这些类型的所有前缀都已自动更改。




回页首


XML Schema 语言构造的名称空间

正如我们可以给自己的模式中定义的类型定义前缀一样,我们也可以为 XML Schema 语言本身的词汇表关联前缀。常见的约定是通过以下声明使用前缀 xsd: 与 XML Schema 名称空间关联。

xmlns:xsd="http://www.w3.org/2001/XMLSchema

但是任何其它前缀,如 xs: 或者 foo:,将同样有效。

如果您想创建这种样式的模式,您可以到 Window => Preferences => XML => XML Schema页指定这种首选项。选择 Qualify XML Schema language constructs复选框。接受缺省的 XML Schema 语言前缀(xsd)或指定一个新的前缀。

图 5. XML Schema 首选项页
XML Schema 首选页

一旦指定了这个首选项,在您新创建的任何模式中,xsd 前缀都会出现在所有 XML Schema 语言的词汇表中,例如 xsd:complexType 和 xsd:string。下面显示一个这种模式的小片段。

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.ibm.com"
xmlns:University="http://www.ibm.com">
<xsd:complexType name="Student">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"></xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>




回页首


验证 Schema

XML Schema Editor 的另一个有用特性是增量的验证特性。在 XML Schema 开发过程的任何时候,您都可以按 Validate按钮来验证模式。当您保存文档时,或者结束在 Source 视图中的输入时(例如切换到其它视图),验证会自动进行。任何验证错误将在 Task 视图中报告,并在 Source 视图中的相应一行和 Outline 视图中的相应对象用小的红色标记进行标识。

另外,在 Design 视图中进行更改时,请注意状态栏。它将包含对正在开发的模式中潜在错误的提示。





回页首


结束语

本文简要介绍了 WebSphere Studio Application Developer 中所包含的 XML Schema Editor。在后续文章中,我们将讨论更多高级主题,例如:

  • 从多个文档创建模式
  • 标识约束
  • 从 XML Schema 生成 Java™ bean
  • 从 XML Schema 生成 XML 文档
  • 通配符如何工作

请让我们了解您的想法。



关于作者

Christina Lau 是 IBM 的一名高级技术部成员。她目前领导着 WebSphere Studio Application Developer 中 XML 的工作。 可以通过 clau@ca.ibm.com与她联系。




对本文的评价










回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款