0

我正在使用 IBM Rational Software Architect (RSA) 从 UML 模型为 SOAP 服务生成 WSDL/XSD。RSA 允许您使用丰富的格式记录模型中的类和属性。

例如,我在Trailer类上有以下文档:

设计用于由另一辆车牵引 轮式车辆。已知的亚型包括:

  • 大篷车
  • 箱拖车
  • 船拖车

当 UML 模型转换为 WSDL/XSD(使用开箱即用的 UML 到 WSDL 转换)时,格式将作为 HTML 标记保留在 xsd:documentation 元素中:

  <xsd:complexType name="Trailer">
    <xsd:annotation>
      <xsd:documentation>&lt;p&gt;
    A&amp;nbsp;wheeled &lt;strong&gt;Vehicle&lt;/strong&gt; that is designed for&amp;nbsp;towing by another &lt;strong&gt;Vehicle.&lt;/strong&gt; Known
    subtypes include:&amp;nbsp;
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;
        &lt;strong&gt;Caravan&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;strong&gt;BoxTrailer&lt;/strong&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;strong&gt;BoatTrailer&lt;/strong&gt;
    &lt;/li&gt;
&lt;/ul&gt;</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>

不幸的是,这真的很难阅读,我一直在搜索(没有运气)可以查看带有 HTML 标记文档的 WSDL/XSD 的程序。

XmlSpy 2008 做不到,RSA 做不到(这有点令人惊讶,因为它首先生成了 XSD),我尝试过的任何 Web 浏览器也做不到。

我确实编写了一个 JET 模板,它从模型中提取文档并输出到 HTML,我可能会编写一些 XSLT 来从 XSD 中做类似的事情,但我希望那里有一个程序(最好是免费的)可以查看HTML 格式的文档。

本质上,我希望能够告诉我们 Web 服务的消费者,如果他们想阅读文档,他们可以在 X 程序中查看 WSDL——有人知道最好的解决方案吗?

编辑: 感谢您的建议,但我想我有一个解决方案!我没有意识到 RSA 可以将 WSDL 导出为 HTML(右键单击 WSDL、导出、HTML)。生成的 HTML 具有每个模式元素的图形视图、每个元素的文档以及原始源,并且所有内容都超链接在一起。

最重要的是,文档的格式再次丰富!一个小警告是;nbsp' 出现在 HTML 输出中。这似乎是因为&符号在 HTML 中被转义:

&amp;nbsp;

相反,它应该是

&nbsp;

我将更新我的模型到模型转换以确保将;nbsp's 替换为真实空格(我认为我不需要文档中的不间断空格),因此生成的 WSDL/XSD 永远不会拥有他们。

4

4 回答 4

0

我非常怀疑标准 xml/xsd 编辑器是否可以解释 html 标记并生成适当的文档。Oxygen XML Editor 在理解和转换 XML 实体(liket < 等)方面做得不错,但 HTML 标记和实体保持原样。下面是设计视图中的屏幕截图。

在此处输入图像描述

于 2011-11-28T04:54:02.597 回答
0

的类型<xs:documentation><xs:any>这样您实际上应该能够在不转义标记的情况下包含您的文档,前提是它是一个格式良好的 XHTML 片段而不是 HTML。我猜想一些 XML Schema 工具能够解释嵌入式 XHTML 并将其显示为格式化文本。

请注意,如果标记未转义,则它绝对必须是格式良好的 XML 片段,否则文档元素将导致您的模式格式错误。这也适用于 HTML 实体!如果文档包含(未转义的)实体引用(除了 5 个预定义的 XML 实体),那么您的架构必须包含外部 DTD 引用或具有定义该实体的替换文本的嵌入式 DTD。在您的情况下,文档包含&nbsp;实体参考。可能最简单的方法是将此类实体替换为相应的 Unicode 字符/文本或字符引用(&#160;用于&nbsp;

如果有机会,请尝试在不转义标记的情况下包含文档,并确保其格式正确。否则,您可能需要两次处理文档:1) 解析模式并提取文档 2) 再次解析文档文本(可能是 HTML,而不是 XML)。

于 2011-11-28T12:01:53.927 回答
0

我已经使用最新版本的 QTAssistant 进行了尝试,它仅在模式帮助面板中显示为这样;我已经对网格视图以及文档生成器提出了功能请求,以使其工作相同。这是你所期待的吗?

帮助面板显示在 Graph/Diagram 视图中选择的模式对象的注释。要显示帮助面板,请按 F1。

XSD 编辑器显示带有 HTML 格式注释的架构帮助

于 2011-11-29T03:14:53.557 回答
0

此问题已在 RSA 8.0.4 中修复- 现在支持使用纯文本导出到 WSDL/XSD(以及按类型对架构进行排序的选项,然后按字母顺序命名!)。

要查看从 RSA 早期版本中的 UML 模型生成的 WSDL/XSD 中的文档,最简单的解决方案是使用 RSA 将 WSDL/XSD 导出为 HTML。您可以通过右键单击 WSDL/XSD,选择导出,然后选择 HTML 来执行此操作。

生成的 HTML 具有每个模式元素的图形视图、每个元素的文档以及原始源,并且所有内容都超链接在一起。

最重要的是,文档(在 WSDL/XSD 中几乎不可读)再次采用了丰富的格式!一个小警告是;nbspRSA 的文档编辑器插入的 's 也出现在 HTML 输出中。这似乎是因为&符号不仅在 WSDL/XSD 中被转义(这很好),而且在 HTML 中(糟糕!):

&amp;nbsp;

相反,它应该是

&nbsp;

一个简单的解决方法是&amp;nbsp;在生成 HTML 之前用真实空格替换 WSDL/XSD 中的所有 '。

于 2011-11-30T00:10:48.467 回答