XML元素覆盖

问题描述:

我还没有想出一个好的,干净的方式来做到这一点,所以我会给你带来我的困境!XML元素覆盖

我想用XML表示一个配置。我有一些领域,一些需要,一些不是,大多数都有严格的限制。我有一个基本的配置,我将代表作为config.xml中可能有这样一些内容:

... 
<config> 
    <element-a value="3.2" /> 
    <element-b value="hello world" /> 
</config> 
... 

有相关联的模式,说这两个领域的需要。一个是浮动,一个是一个字符串。现在我有另一个配置,它与第一个相似,只有一个小改动。我谨代表这样说:

... 
<include base-config="config.xml"> 
<config> 
    <element-a value="1.5" /> 
</config> 
... 

实际上,这种新的配置拉一切从基本配置文件中的元素,只规定了什么是压倒一切的。我不能为此使用相同的模式,因为现在所有的元素都是可选的,但是我想对数据保持相同的约束(最好不必创建一个新的模式,并且所有元素都是“可选的”)。

是否有符合XML标准的方式来做到这一点?或者任何人有幸完成了这一切?也许你有一个你想分享的设计模式?

目前,我期待具有每架构的两个副本,并在处理步骤然后过载更新的元素我将加载碱。这是一个麻烦的方法,所以希望有更好的方法。

如果模块化的架构,这样你定义使用全局类型的限制,那么你可以重新使用那些当你定义您的基本配置模式(这里的/是必需的所有元素的大多数元素)的类型和可选的配置模式(其中每个元素都是可选的)。这种方法可能也会使用全局元素,然后在序列中引用它们。

然而,XML模式不能帮助你阅读的实际配置文件和执行超载的东西。

+0

假设我拥有BaseSchema和OverrideableSchema包含的GlobalTypes。我如何挑选和选择BaseSchema中需要的元素,以及OverrideableSchema中的可选元素? – Anthony 2011-04-01 23:15:14

+0

(至于读取实际的配置和执行超载,我完全预期的XML不由我在这里。我在实施的解决办法是总是需要一个基础包括通过了严格的架构。) – Anthony 2011-04-01 23:16:19