2010-01-22 156 views
3

XSD模式我有一个SQL SELECT语句:是否有SQL Select语句

SELECT Code, Description 
    FROM Table1 
WHERE (Code='a' and Amount>100) or (Code='b' and Amount<100) 

我希望用XML来呈现SELECT语句。这是我最初的设计:

<select table="Table1"> 
    <columns> 
     <column name="Code"/> 
     <column name="Description"/> 
    </columns> 
    <filters> 
    <or> 
     <and> 
     <filter field="Code" cond="eq" value="a"/> 
     <filter field="Amount" cond="gt" value="100"/> 
     </and> 
     <and> 
     <filter field="Code" cond="eq" value="b"/> 
     <filter field="Amount" cond="lt" value="100"/> 
     </and> 
    </or>  
    </filters> 
</select> 

但是,我不满意它。找到用于SQL SELECT语句的XSD要复杂得多。它们在SQL SELECT语句中有许多我没有包括的特性,例如:Aggregates,Inner/Outer Join,Between,IN,Sub Select等。

设计这样的模式已经超出了我的能力。有没有人知道是否有这样的XSD到SQL Select语句表示?

回答

2

我希望使用XML来呈现SELECT语句。

但你必须使用XML?如果你不这样做,你就不应该这样做,因为使用XML作为编程语言的定义是一个非常糟糕的主意。即使XML不使用XML来实现own query language

如果您需要定义一种编程语言,那么您应该使用正式的语法。 Antlr是一个可以用来定义这种语法的工具。

如果你的工作依赖于使用XML,并且如果你被解雇了,你的妻子和孩子会饿死,那么我会不情愿地承认你应该继续下去,否则立即停止!

+0

+1 Antlr之前的妇女和儿童 – 2010-01-22 03:24:55

+0

我不认为在编程语言中使用xml是一个糟糕的主意。在Delphi中,我可以从XSD生成xml文档类。我不打算解析SQL,但我只是寻找能够呈现SQL Select语句的XSD。从那里,如果我想从数据库中查询,我可以使用XSLT生成一条SQL语句。或者我可以创建一个SQL编辑器,以编程方式帮助我形成SQL select语句。 – 2010-01-22 05:43:49

+1

@Chau Chee Yang:也许你应该查看开发SQL编辑器的开源项目...可能会有一些使用xsd模式。 – Filburt 2010-01-22 12:27:40