我们目前正在参与一个敏捷项目,其中新的增强功能和错误修复都快速而激烈,导致XML有效负载不断通过XSD验证。 Java软件引擎需要XML和XSD匹配。
更糟糕的是,我们的目标是一个数据库,其表格布局也必须跟上快速变化。我已经解决了数据库部分,但没有足够快速地处理XML / XSD差异的理想解决方案。
我们依赖其他部门在布局发生变化时向我们发送最新的XSD,但他们无法跟上快速变化的步伐,因此我们最终手动创建新的XSD版本结束。
我设计了一个系统,我们处理的每个XML文件都通过几个版本化的XSD文件之一进行验证(从最新版本到最旧版本)。除非没有版本适用于给定的XML,否则我们必须找到最接近的匹配并生成新版本。 XML中有时间戳信息,并使用xsd文件的名称查找其最接近的现有匹配。
我正在使用xsd文件名,例如YYYY-MM-DD-SEQ.XSD,例如
必须有一种更简单的方法来做到这一点,但我找不到方法。我真的不想花时间编写XSD生成器,但也许这是最好的方法?有更好,更简单的方法吗?
答案 0 :(得分:0)
我们目前正在参与一个既新的敏捷项目 由此产生的增强功能和错误修复正在快速而激烈地进行 在XML有效负载中,XSD验证不断失败。 Java软件 引擎需要XML和XSD匹配。
敏捷开发或快速发展的界面定义 1 没有任何问题。验证正确失败,并为Java软件引擎提供防止意外输入的安全措施。这是应该发生的事情,直到......
我设计了一个系统,我们处理的每个XML文件都经过验证 跨越几个版本化的XSD文件之一(从最开始的 最新版本到最老的。)
击败架构的正确角色是错误的。
必须有一种更简单的方法来做到这一点,但我找不到方法。 我真的不想花时间编写XSD生成器 但也许这是最好的方式?有更好,更简单的方法吗?
不,没有更简单的方法来滥用架构。你将不得不努力工作,而忽略了一些错误的唠叨感。
或者,你可以备份,修改你的流程,让XSD完成它的工作而不是挣扎,以便打败它。
应该使用敏捷开发框架更新XSD,以反映开发中任何时候的真实接口定义。验收标准应始终涉及对XSD指定的当前接口定义进行验证。
如果一个外部团体无法跟上,那么你有一个更高层次的问题应该直接解决,而不是席卷地毯。 他们加速,或者你减速,或者你接受阻抗不匹配,并设计显式转换步骤来解耦两个系统并缩小差距。 XSD版本将成为你的差距的指南。 XSLT非常擅长在两个版本的XSD之间转换XML;它甚至可以用来提供其他系统尚未真实生成的模拟数据。如果您无法匹配两组之间的变化率,您至少能够明确控制哪些组可以在其时间范围内吸收哪些组。
[1]嗯,如果真正的潜在问题是在提交接口定义的过程中过早,则会出现问题。