之前我使用过Schematron来验证XML文档。但是,我现在有一个我想知道的新用例。
有没有人知道任何可用于验证XSD(而不是实例文档)的XSLT或Schematron处理器,以确定符合该XSD的任何文档是否能够满足Schematron要求?
我的问题的背景。我正在考虑基于SOA架构的消息传递技术。我正在考虑Consumer Driven Contracts模型。在他对Martin Fowlers页面(上面链接)中的相同内容中,Ian Robinson描述了使用Schematron来验证传入的消息,同时如果传入消息的模式发生变化,仍允许向后和向前兼容。
基于此,我正在考虑以下事项:
鉴于这种情况,我正在考虑客户端可能实际验证架构本身以查看新服务合同是否违反客户要求的可能性。
修改
根据下面Mads Hansen的评论,这里有一些细节。
我正在尝试定义服务注册表,以供将来程序员使用。所以这是一个必然的广泛问题。我试图放松服务和依赖它们的消费者之间的关系,以便为服务的发展提供空间。考虑UML球和插座符号,设计师可以通过它表示提供的合同和所需的合同。在我的服务注册表中,Services将注册其提供的合同,其中包括XML Schema以定义它们发送的消息的格式。消费者将注册Schematron文档,定义他们感兴趣的那些消息的部分。将来,随着服务的发展,注册管理机构本身可以提供警告,甚至可能阻止服务以打破消费者的方式发展。它可以通过根据使用它们的消费者的架构来验证服务合同来实现这一目的。
我意识到我可以编写一个XSLT,它将XSD和Schematron作为输入并完成我需要的工作,但我想知道是否有人已经完成了这项工作。因此,问题是:有没有人知道可用于验证XSD(而不是实例文档)的任何XSLT或Schematron处理器,以确定符合该XSD的任何文档是否能够满足Schematron的要求?