<转>为 SOAP 更新 XML Schema
可视化 Schema 编辑
如果您将 XSD Schema Infoset Model 和 Eclipse Modeling Framework (EMF) 插件安装到您的 Eclipse 中,您可以在您的工作台中看到样本编辑器。 ( 注意:要浏览这个编辑器不需要遵循本文)。在 Navigator 中右键单击 schema.xsd
文件,然后选择 Open With... ,
然后是 Sample XML Schema Editor
。您将看到一个标准 Eclipse 编辑器,显示了常见的 Source 视图 ——这就是您打开的 .xsd 文件的具体 DOM 表示。
在编辑器的底部,在 Source 视图后面有两个标签——Semantics 和 Syntax 。这两个树形视图显示了 Schema 组件之间的抽象 Infoset 关联。例如,在 Semantics 视图,您可以看到 Type 的顶层条目—— 这就是所有的 Schema 声明的类型(简单类型和复杂类型),还不仅仅局限于顶层条目,也不仅仅局限于该文档(例如,通过包含或者导入来打开 Schema 文档)。
在本例中,我将把这个问题稍微简化一下。 MakeSoapCompatible.java
是一个程序,试图从 Schema 中获取 attributeDeclarations
,然后转换成为基本对等的 elementDeclaration
s ,并显示一些提示。
很显然,如果在 complexType
的 particle 中已经存在同名的元素,一开始您无法将属性转变成为元素。因此,首先检查命名冲突,然后拒绝更改这些属性。为了简化这个实例,任意声明一些条件,使得 Schema 和程序不匹配。我并不更改那些带通配符的 Schema ,因为需要进行复杂的命名检查,才能确保更改的属性不会和元素发生冲突。也不更新那些使用了 #all
或者 #choice
作为排序的组,因为这将以无法预期的方式更改组的含义。
?
?
?
?
?
?
样本代码
本文提供了一个样本程序 MakeSoapCompatible.java ,显示了一个实例。任何有更多兴趣的人可以从那里阅读更清楚的注释。另外,也包含了一个简单的 Schema 文档 MakeSoapCompatible.xsd ,显示了一个基本的订单,其中的属性将转变为元素;对您的其他 Schema 文档也可以运行该样本程序。如果要独立运行,至少需要 XSD Schema Infoset Model 和 Eclipse Modeling Framework 。
您可以下载样本 Zip 文件中的样本程序和实用程序(参见 参考资料)。
在 XSD Schema Infoset Model(版本 1.0.1 或者更高版本)中通常附带了其他两个实用 .java 文件,其中附带注释的代码也显示了其他一些实用技术。它们包括:
XSDSchemaQueryTools.java 展示了其他查询 Schema 组件的高级方法。
XSDSchemaBuildingTools.java 有一些易用的方法,可以通过编程来构建 Schema 。
?