我有 20,000 行 + ACORD(保险业的标准架构)架构。我想“瘦身”或“切片”架构以仅包含我们将在交易中使用的那些数据元素。虽然我当然可以手动执行此操作,但这是一个艰苦的过程。
有没有人使用实用程序来促进这些子模式的定义?非常感谢您的帮助。
最佳答案
QTAssistant (我与它相关联)XML 模式重构 (XSR) 是一种可以非常轻松地完成此任务的工具。
从概念上讲,它涉及两个工作模块:
- 在架构集合中组织源 XSD。
- 使用一个或多个 XSD 文件集定义“发布”。
同时支持交互式(使用图形用户界面)和命令行,后者用于持续集成堆栈等。
让我们假设您想要的是仅释放 UserAuthRequest/Response 和所有其他依赖项。下面显示了一个示例设置;主要元素是:
- 合集(这里是v2.26.0)
- 引用此特定版本的版本(ACORD 版本)。这个想法是,如果您将来添加另一个版本,您可以“升级”您的版本以引用新版本,从而轻松地保持对更新版本标准的遵守,而无需重做“编辑”。
- 具有相关过滤器的文件集(20% 发布)。在这种情况下,我设置了一个文件,该文件“播种”了两个元素 UserAuthRequest 和 UserAuthResponse。
然后,您可以通过序列注入(inject)、排除、重命名、重新键入、XML 命名空间“重定向”等进一步自定义内容模型 - 我们称之为“重构”。点击 References,然后展开 Local Exclusions(如果有您想去除的粒子等)。完成后,点击Generate - 就大功告成了。
然后可以将保存的 XSR 文件作为参数传递给命令行实用程序以从标签生成相同的文件,并将生成的文件重新 checkin ,传递给 xsd.exe 或 xjc
从统计数据中可以看出,从 4633 个元素、1123 个复杂类型和 589 个简单类型中,剩下 40 个元素、14 个复杂类型和 6 个简单类型。
您可以根据需要在输出文件中添加/调整您想要的内容,方法是选择您想要的特定组件;重构引擎将自动引入所有依赖项。
默认情况下,生成的文件是排序的:简单类型、复杂类型、元素。您可以通过指向“模型文件”来覆盖它并保持“原始”布局 - 可以是原始 XSD 或任何其他文件。当人们出于任何合规性原因想要依赖“愚蠢”的文本/xml 比较工具时,这会派上用场。
额外的东西包括显示 XSD 组件之间关系的 View ...
或者,在“可推断”的地方,XSD 的关系 View (在 .NET 上称为数据集):
关于xml - 模式切片/瘦身工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15236392/