xml - 模式切片/瘦身工具

标签 xml xsd

我有 20,000 行 + ACORD(保险业的标准架构)架构。我想“瘦身”或“切片”架构以仅包含我们将在交易中使用的那些数据元素。虽然我当然可以手动执行此操作,但这是一个艰苦的过程。

有没有人使用实用程序来促进这些子模式的定义?非常感谢您的帮助。

最佳答案

QTAssistant (我与它相关联)XML 模式重构 (XSR) 是一种可以非常轻松地完成此任务的工具。

从概念上讲,它涉及两个工作模块:

  • 在架构集合中组织源 XSD。
  • 使用一个或多个 XSD 文件集定义“发布”。

同时支持交互式(使用图形用户界面)和命令行,后者用于持续集成堆栈等。

让我们假设您想要的是仅释放 UserAuthRequest/Response 和所有其他依赖项。下面显示了一个示例设置;主要元素是:

  • 合集(这里是v2.26.0)
  • 引用此特定版本的版本(ACORD 版本)。这个想法是,如果您将来添加另一个版本,您可以“升级”您的版本以引用新版本,从而轻松地保持对更新版本标准的遵守,而无需重做“编辑”。
  • 具有相关过滤器的文件集(20% 发布)。在这种情况下,我设置了一个文件,该文件“播种”了两个元素 UserAuthRequest 和 UserAuthResponse。

QTAssistant ACORD setup

然后,您可以通过序列注入(inject)、排除、重命名、重新键入、XML 命名空间“重定向”等进一步自定义内容模型 - 我们称之为“重构”。点击 References,然后展开 Local Exclusions(如果有您想去除的粒子等)。完成后,点击Generate - 就大功告成了。

QTAssistant filtered ACORD release

然后可以将保存的 XSR 文件作为参数传递给命令行实用程序以从标签生成相同的文件,并将生成的文件重新 checkin ,传递给 xsd.exe 或 xjc

从统计数据中可以看出,从 4633 个元素、1123 个复杂类型和 589 个简单类型中,剩下 40 个元素、14 个复杂类型和 6 个简单类型。

您可以根据需要在输出文件中添加/调整您想要的内容,方法是选择您想要的特定组件;重构引擎将自动引入所有依赖项。

默认情况下,生成的文件是排序的:简单类型、复杂类型、元素。您可以通过指向“模型文件”来覆盖它并保持“原始”布局 - 可以是原始 XSD 或任何其他文件。当人们出于任何合规性原因想要依赖“愚蠢”的文本/xml 比较工具时,这会派上用场。

enter image description here

额外的东西包括显示 XSD 组件之间关系的 View ...

enter image description here

或者,在“可推断”的地方,XSD 的关系 View (在 .NET 上称为数据集):

enter image description here

关于xml - 模式切片/瘦身工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15236392/

相关文章:

java - XML 文件没有循环通过 Out

xml - 是否有用于二进制 XML 的 Fiddler 插件?

xml - 如何从存储为资源的字符串或 .xsd 创建 XmlSchema 实例

java - JAXB 绑定(bind)文件 : validation error

xml - Vim - 删除 XML 注释

sql-server - 在 SQL Server 中使用 XQuery 返回重复项

c# - 将数组插入xml文件

binding - JAXB XJC 两个声明导致冲突。无法兑现自定义绑定(bind)

java - 可以进行哪些向后兼容的 XSD 更改?

java - 编码期间未设置 JAXB 固定属性