我打算在我的XML数据中添加一些版本信息。 由于我的工具多年来不断发展,我的XML内容/格式也在不断发展。
我可能会在root元素中添加一些属性,但我不太喜欢这个解决方案,因为版本信息不是我的业务类的固有属性。 另一个想法是为每个新版本引入一个版本化命名空间....
我发现MS使用了一些<?mso-application ... ?>
PI来标记他们的文档。
这是一个好主意,并引入我自己的自定义PI来携带我的元信息?
是否有常用PI标签列表或如何设计我自己的PI?
要使我的工具能够读取以前/过时的XML数据,我可以在unmashaller前插入一些XSLT转换,以自动调整以前的版本。
因此,我的业务类不必关心任何过时的XML语法。
有什么建议吗?
迪特。
答案 0 :(得分:1)
使用版本化命名空间绝对是个坏主意。这意味着如果您对架构进行3%的更改(仅影响1%的用户),则每个用户都必须更改其应用程序以更改为新的命名空间,或者更糟糕的是,处理识别多个命名空间的复杂性
使用PI不是一种常见的解决方案,但它没有明显的危害;除了在架构验证期间您无法强制执行PI的存在或内容这一事实。
在我看来,最干净的解决方案是根元素的版本属性。这就是XSLT做到这一点并且运行良好的方式。