【问题标题】:find xsd/schema types subset being *used* in an xml instance/document (skip unused xsd types)在 xml 实例/文档中找到 *used* 的 xsd/schema 类型子集(跳过未使用的 xsd 类型)
【发布时间】:2021-10-02 11:39:17
【问题描述】:

给定

  • xml 文档/xml 实例
  • xsd 架构

是否有工具可以确定在该特定 xml 实例中实际使用的 xsd 类型(架构的)子集?

(我想跳过架构中存在但未在 xml 中使用的所有 xsd 类型)

例如我的 xsd 可能定义了 1000 个 xsd 类型,但在我的 xml 中我只使用了其中的 20 个。我只想提取正在使用的 20 种类型。

谢谢

【问题讨论】:

    标签: xml xsd


    【解决方案1】:

    撒克逊模式验证器有一个选项-stats:filename 旨在提供此信息。见https://www.saxonica.com/documentation10/index.html#!schema-processing/commandline

    (老实说,我已经有一段时间没有使用它了:请告诉我们您的使用情况)。

    您需要 Saxon-EE 的评估许可证,可从 https://www.saxonica.com/download/download.xml 获得

    【讨论】:

    • 起初我认为 OP 的请求和此功能可能用于某种死代码删除(编译器)或树摇动(JavaScript 构建),但我认为虽然它有点多,但似乎两者都没有可行:在评估单个文档实例的过程中考虑到组件的死组件删除或 XSD 抖动功能的有用性将受到实例的代表性的约束。我想知道 OP 对这些信息的实际需求可能是什么。
    • 统计文件可以累积在大量实例上,这可能会很好地指示给定语料库中使用的词汇子集,这可能会指导您了解,例如,您的测试需要扩展的地方。
    • 有时,人们选择使用具有大量依赖项的现有 xsd 类型,只是因为他们需要一个简单的元素而没有这些依赖项。我知道我的方法在理论上远不是一种允许我处理“基于”该模式的 any xml 实例的方法。除此之外,它可能更实用。考虑映射一个 xsd 类型而不是 1000。这是一个真实的例子,1:1000 是我的模式的实际与理论使用的真实比例。好吧,生活是……复杂的。感谢您的反馈!
    猜你喜欢
    • 1970-01-01
    • 2020-03-26
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 2017-10-04
    • 2018-03-04
    相关资源
    最近更新 更多