【问题标题】:Tool that can combine many XSD files into one?可以将多个 XSD 文件合二为一的工具?
【发布时间】:2010-10-04 21:34:57
【问题描述】:

我需要为大约 65 个 XSD 文件创建 XML 序列化程序类,为此我使用 Microsoft 的 XSD.EXE 生成 C# 代码...

但是,我在生成的输出文件中不断遇到 Window CMD 的字符限制(其中 XSD.EXE 组合了每个 XSD 的名称):“指定的路径、文件名或两者都太长。完全限定文件名不能超过 260 个字符,目录名不能超过 248 个字符。"

长话短说,似乎我可以让所有这些一起验证和生成的唯一方法是我可以合并所有 XSD(取消引用包含/导入,而 XSD.EXE 没有将 schemaLocation 解析为一个大的。

请告诉我有一个工具可以做到这一点......

【问题讨论】:

  • 您尝试过 LINQ to XSD 吗?它是 XSD.EXE linqtoxsd.codeplex.com 的一个很好的替代品
  • @Artem K -- 不,我以前没有听说过 LINQ to XSD。我去看看。

标签: .net-3.5 xsd xml-serialization xsd.exe


【解决方案1】:

您可以做的是创建另一个名为 file.xsd 的新文件,其中包含其中的所有模式名称,然后诀窍是使用 .\ 作为前缀命名最后一个模式文件。

文件.xsd

<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
    <generateClasses language='CS' namespace='MyNamespace'>
        <schema>First.xsd</schema>
        <schema>Second.xsd</schema>
        <!-- more schema files here -->
        <schema>.\Third.xsd</schema>
    </generateClasses>
</xsd>

现在运行命令“xsd.exe /p:file.xsd /classes”,你会得到生成的类文件:)

【讨论】:

    【解决方案2】:

    供将来参考,为 XML Schema 重构设计的另一个工具是 QTAssistant - 我与它相关联。

    澄清您的问题并希望对其他人有所帮助...无法按照您的要求实现的一件事是无法取消引用导入:XSD 文件与一个 XML Schema 相关联,该 XML Schema 不允许多个每个 xsd:schema 元素的目标命名空间。

    xsd:include 可以“内联”;由于文件必须具有相同的目标命名空间或匹配“变色龙”命名空间设计方法,因此可以将文件的内容合并到另一个文件中。

    xsd:import 不能“内联”...除非您也重构目标命名空间。但是,这不会产生等效的模式集。

    如果您有一个跨 65 个 XSD 文件(例如 10 个命名空间)创作的完全定义的 XML 架构集,则重构的 XML 架构文件的“规范”集必须至少包含 10 个文件。

    【讨论】:

    • 感谢您的澄清和提示!
    • 链接已损坏。
    【解决方案3】:

    我确实找到了一个工具(基本上是一个 XSLT)来做这种事情:Paul Kiel 的XML Schema Flattener,但我还没有动手。

    其他消息来源说Oxygen XML EditorXMLSpy 等工具也可以做到这一点,但我不知道怎么做。

    ->http://www.oxygenxml.com/xml_schema_editor.html#xml_schema_flatten

    就我而言,我通过另一条迂回路线解决了这个问题:缩短每个输入 XSD 的名称,以便 XSD.EXE 的组合输出名称(您无法选择)低于 260 个字符的限制。

    【讨论】:

      【解决方案4】:

      只需在最后一个 .xsd(schema) 文件的名称中添加 .\ 前缀,并将其括在逗号中,例如“.\last.xsd”。将使用最后一个模式文件名生成输出类。

      【讨论】:

      • 这很有效,但 XSD 一开始的行为也很疯狂
      • 一个有效的例子 xsd Base_Types.xsd Catalog_Types.xsd ".\Data_Fin.xsd" /c /n:Data_Fin
      【解决方案5】:

      我刚开始使用 Altova XML Spy(1 天)

      将 .xsd 架构扁平化为一个文档...仍将验证,并提供引用以在 Eclipse 中单击...

      1. 打开你所说的.xsd...
      2. 名为 (Schema Design) 的菜单项有一个名为 (Flatten Schema) 的项目。
      3. 点击它。 (它会问你在哪里保存新文件...我只是创建一个输出文件夹或其他东西。

      它似乎工作得很好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-15
        • 1970-01-01
        • 1970-01-01
        • 2014-03-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多