XQuery与SQL/XML,这两种标准都可以用来查询数据并返回XML。不同的是XQuery以XML为中心,而SQL/XML以SQL为中心。
XQuery是W3C为查询XML而制定的语言规范。然而,除了查询XML外(不管XML存在于何处,数据库中,数据库外,中间结果等等),XQuery也可以查询关系型数据、对象数据等。
SQL/XML是ANSI/ISO SQL 2003的一部分,是SQL标准为了兼容XML形式而作的扩充。在select子句中使用SQL/XML中的XML构造函数可以返回XML结构的数据。比如:
SELECT XMLELEMENT (
NAME “order”,
XMLATTRIBUTES (o.oid AS “id”),
XMLELEMENT (
NAME “signdate”,
o.contractdate
),
XMLELEMENT (
NAME “amount”,
(SELECT SUM(orderitem)
FROM orderItems AS oi
WHERE i.oid o.oid)
)
)
FROM orders AS o
WHERE status ‘open’;
返回
<order id=“4711”>
<signdate>2002-03-18<signdate>
<amount>24000</amount>
</order>
<order id=“4712”>
<signdate>2002-03-19</signdate>
<amount>45000</amount>
</order>
从目前来看,由于开发人员更熟悉SQL,因而SQL/XML会更容易收到他们的欢迎。然而从长远来看XQuery更加重要,因为SQL仅仅能够查询关系型数据库中的数据,而XQuery则要强大得多。
XQuery是W3C为查询XML而制定的语言规范。然而,除了查询XML外(不管XML存在于何处,数据库中,数据库外,中间结果等等),XQuery也可以查询关系型数据、对象数据等。
SQL/XML是ANSI/ISO SQL 2003的一部分,是SQL标准为了兼容XML形式而作的扩充。在select子句中使用SQL/XML中的XML构造函数可以返回XML结构的数据。比如:
SELECT XMLELEMENT (
NAME “order”,
XMLATTRIBUTES (o.oid AS “id”),
XMLELEMENT (
NAME “signdate”,
o.contractdate
),
XMLELEMENT (
NAME “amount”,
(SELECT SUM(orderitem)
FROM orderItems AS oi
WHERE i.oid o.oid)
)
)
FROM orders AS o
WHERE status ‘open’;
返回
<order id=“4711”>
<signdate>2002-03-18<signdate>
<amount>24000</amount>
</order>
<order id=“4712”>
<signdate>2002-03-19</signdate>
<amount>45000</amount>
</order>
从目前来看,由于开发人员更熟悉SQL,因而SQL/XML会更容易收到他们的欢迎。然而从长远来看XQuery更加重要,因为SQL仅仅能够查询关系型数据库中的数据,而XQuery则要强大得多。