【问题标题】:Tool to refactor .xsd schema?重构 .xsd 架构的工具?
【发布时间】:2012-01-23 01:44:43
【问题描述】:

我有一个 .xsd 方案,它有 多个 根元素,很少有复杂和简单的类型,复杂类型指的是那些根元素。由于这些根元素,我无法以我想要的方式生成 .xml。所以我认为我需要添加将作为根元素的元素,并将所有其他元素添加为其子元素,还是我错了?

是否有工具可以帮助我创建根元素和重构方案?我得到了什么:

我在想也许我只需要用 1 个元素创建另一个 xsd 并引用其中的第一个 xsd 中的所有元素,但我不知道该怎么做。这是个好主意吗?

【问题讨论】:

    标签: xsd


    【解决方案1】:

    正如 Pangea 所说,您的编辑的答案确实是 NO。那是因为要引用另一个元素(如 ),必须全局声明引用的元素。

    需要全局元素的其他场景是使用替换组。我想建议的是,重构 XSD 的方式可能并不总是可以使全局只保留您希望在实例 XML 中作为根的元素。

    这应该让您认为要解决您的问题,更好的方法可能是追查您无法以您想要的方式生成 .xml 的原因。如果你能描述一下,你可能会在这里得到更好的答案......

    我想添加这个答案的另一个原因是我注意到使用 XML 作为标签名称。虽然看起来没问题,但我可以告诉您,我已经看到了一些非常“大牌”的应用程序,它们只会被 标记名称窒息。 XML 实际上是“保留的”,请查看 XML Spec 的this section。引用:"名称以字符串 "xml" 开头,或任何匹配的字符串 (('X'|'x') ('M'|'m') ('L'|'l' )),保留用于本规范的这个或未来版本的标准化。"

    始终与规格保持一致......

    【讨论】:

      【解决方案2】:

      您在架构中定义的任何全局元素都是实例文档中的潜在根元素。如果您不希望这种行为,请确保您在 xsd 中只有一个全局元素定义.它与工具无关(尽管 xml 编辑器可以简化这一点)。

      【讨论】:

      • 感谢您的回答!我在想也许我只需要用 1 个元素创建另一个 xsd 并引用其中的第一个 xsd 形成的所有元素。这是个好主意吗?
      • @bunnyjesse112 将元素移动到不同的 xsd 并不能解决问题,如果它们仍然是全局定义的
      猜你喜欢
      • 1970-01-01
      • 2011-11-28
      • 2012-05-29
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 2011-05-24
      相关资源
      最近更新 更多