我有一个XML Schema和一个对该架构有效的XML实例。
此XML实例包含一些数据。
我想用更多数据扩展XML实例(我自己的XML元素中每个XML元素的元数据),同时保持它对提供的模式有效。
真正的用例是我拥有自己的控件,通过XML获取数据,我想生成一个新的XML,以某种方式保存与控件序列化相关的其他元数据。
我的几个解决方案是保留另一个文档,其中包含“XPath,Mode,Color”列表 我在加载XML后加载第二遍。
另一种解决方案是将id添加到XML节点,这样就可以引用另一个文档中的节点(而不是使用XPath)。
另一个想法是以某种方式将属性(在每个元素的命名空间中)添加到数据XML实例,但问题是我在以后尝试再次加载时使用新属性验证XML时可能会遇到问题。 (因为我添加到XML的属性没有在他的模式中定义)
你有更好的解决方案吗?您将投票选择哪种解决方案? (请解释。)
谢谢!
答案 0 :(得分:1)
从您的问题中不清楚是否生成了一次额外的元数据,或者是否需要在次级负载中存储和使用这些元数据。
您可以考虑使用XSLT将新XML与元数据一起使用。如果新数据直接失败并从原始XML中推断出来,则可以使用XSLT轻松生成每个节点的元数据。如果它是可预测且一致的,那么只要加载数据并获得相同的新XML,就可以重复该过程。如果它不可预测,例如,如果您需要动态创建XSLT,您仍然可以在生成XSL后存储它,然后随着时间的推移使用它从原始XML重新生成相同的新XML。
根据您建议的解决方案:
此致 因巴尔