使用处理指令提供元信息?

时间:2012-05-09 17:00:31

标签: xml xslt jaxb

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

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

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

要使我的工具能够读取以前/过时的XML数据,我可以在unmashaller前插入一些XSLT转换,以自动调整以前的版本。

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

有什么建议吗?

迪特。

1 个答案:

答案 0 :(得分:1)

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

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

在我看来,最干净的解决方案是根元素的版本属性。这就是XSLT做到这一点并且运行良好的方式。