0

我需要用 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 将非常大,并且大小在我要解决的问题中很重要。

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

选择第一选择是否有任何可能的影响?

4

1 回答 1

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>
于 2013-10-08T14:46:17.090 回答