2013-10-08 72 views
0

我需要用XML来描述查询。查询子句由一个值和一个比较类型组成。例如,让我们来看三种比较类型:平等,包含在一个范围和相似度,其中一个整数定义了一个相似度。我可以形容他们是这样的:如果一个XML节点的内容依赖于一个节点属性值,这是不好的做法吗?

<Clause type="equal">42</Clause> 
<Clause type="inside" lowerlimit="41" upperlimit="43"/> 
<Clause type="similar" degree="2">Abcd</Clause> 

或者,我可以在一个特定的上下文节点描述值,如:

<Clause type="equal"> 
    <Value>42</Value> 
</Clause> 

<Clause type="inside"> 
    <RangeLimit lowerlimit="41" upperlimit="43"/> 
</Clause> 

<Clause type="similar"> 
    <Similarity degree="2">Abcd</Similarity> 
</Clause> 

我找到的第一个例子更力所能及可读的,解析器代码将更加简洁。还有一个事实是,我有9个类型的子句只取值(如相等),只有两个具有附加参数。因此,如果我选择第二种选择,那么得到的XML将会变得更大,并且大小对于我正在解决的问题非常重要。

另一方面,我不确定我喜欢属性之间的关系,第二个例子更具描述性和统一性。

有没有任何可能的影响去与第一选择?

回答

1

依赖于属性的元素很难在模式中描述。

如果您必须在您提供的两种产品中进行选择,那么从编程的角度来看,第二种产品更容易使用。在二者中的任何,你不会轻易能够约束对混合两种形式<Clause>元素:

<Clause type="similar"> 
    <RangeLimit lowerLimit="42" upperLimit="43"/> 
</Clause> 

这里有一些选择:

<Equal>42</Equal> 
<Inside lowerLimit="42" upperLimit="43"/> 
<Similar degree="2">Abcd</Similar> 

<Clause> 
    <Similar degree="2">Abcd</Similar> 
</Clause> 
相关问题