0

我打算在我的 XML 数据中添加一些版本信息。由于我的工具多年来不断发展,我的 XML 内容/格式也在不断发展。

我可能会向根元素添加一些属性,但我不太喜欢这个解决方案,因为版本信息不是我的业务类的固有属性。另一个想法是为每个新版本引入一个版本化的命名空间......

我观察到 MS 使用一些<?mso-application ... ?>PI 来标记他们的文档。这样做并引入我自己的自定义 PI 来携带我的元信息是个好主意吗?是否有常用 PI 标签的列表或如何设计自己的 PI?

为了使我的工具能够读取以前/过时的 XML 数据,我需要在我的 unmashaller 前面插入一些 XSLT 转换以自动适应以前的版本。

因此,我的业务类不必关心任何过时的 XML 语法。

有什么建议么?

迪特。

4

1 回答 1

1

使用版本化命名空间绝对是个坏主意。这意味着如果您对架构进行 3% 的更改,这仅影响 1% 的用户,那么每个用户都将不得不更改他们的应用程序以更改为新的命名空间,或者更糟糕的是,处理识别多个命名空间的复杂性.

使用 PI 不是一种常见的解决方案,但它没有明显的危害;除了在模式验证期间您无法强制 PI 的存在或内容这一事实之外。

在我看来,最干净的解决方案是根元素上的版本属性。XSLT 就是这样做的,而且效果很好。

于 2012-05-09T20:48:09.883 回答