在过去的几年里,我们用于修改和搜索数据库的许多内部API越来越多地与它们所驱动的前端的特定需求和应用程序逻辑纠缠在一起。为了应对这一趋势,我们决定逐步将这些API转移到具有稳定和简明指定接口的web服务。这一步骤的另一个原因是,API最初是为传统网站设计的,但现在越来越多地被AJAX应用程序、iPhone应用程序、外部客户等使用。
在制定这个过程的细节时,我们已经意识到我们计划提供的主要功能之一是通过各种类型的资源进行相当复杂的搜索,例如,人员、文档和位置。
现在,很明显,搜索的细节在很大程度上取决于搜索空间。然而,有很多元概念是通用的。例如,连接搜索谓词和层次结构(大括号)的逻辑运算符以及这些操作的优先规则;数值的范围查询、字符串的正则表达式匹配等。考虑到这些概念,XML立即成为查询的适当表示形式(DSL也是如此,但我认为在我们的例子中这是一把太大的枪)。
所以我的问题是:有没有一种XML元语言可以让我们基于自己的特定领域方言来表达这样的查询?或者,有没有其他的可能性,到目前为止我们还没有想到?
发布于 2010-11-24 20:00:43
以下模式在GIS世界中被广泛使用:
下面是一个例子:
<ogc:Filter xmlns:gml="http://www.opengis.net/gml">
<ogc:And>
<ogc:PropertyIsGreaterThan>
<ogc:PropertyName>isoap:CreationDate</ogc:PropertyName>
<ogc:Literal>2007-07-31</ogc:Literal>
</ogc:PropertyIsGreaterThan>
<ogc:Or>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>isoap:Type</ogc:PropertyName>
<ogc:Literal>service</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>isoap:Type</ogc:PropertyName>
<ogc:Literal>application</ogc:Literal>
</ogc:PropertyIsEqualTo>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>isoap:Type</ogc:PropertyName>
<ogc:Literal>dataset</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Or>
</ogc:And>
</ogc:Filter>这可以在关系数据库和面向文档的数据库中处理,也可以通过Lucene等全文索引进行处理。
发布于 2010-11-24 19:33:40
还有XQuery,它可以使用您自己的函数等进行扩展,但它不是完全基于XML的(它与XML一起工作,但本身不是XML)。
https://stackoverflow.com/questions/4266239
复制相似问题