我需要用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将会变得非常大,并且大小在我正在解决的问题中很重要。
另一方面,我不确定我喜欢属性之间的关系,第二个例子更具描述性和统一性。
第一选择是否有任何可能的影响?
答案 0 :(得分: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>