XRX/XRX 应用程序服务器
XQuery 除了是一种查询语言,也是一种转换语言。它的原始名称是“Quilt”,反映了它将不同部分的(XML)内容编织在一起的能力。
这意味着它擅长从数据存储中查询 XML 数据,并将数据转换为 XHTML 网页。任何支持 XQuery 的 XML 数据存储,只要接受 HTTP 请求,就可以与您的 Web 浏览器通信,并向它发送一个任意复杂、有效的 (X)HTML 文档。
以下是一个简短的示例,说明 XQuery 如何将 XML 数据库记录转换为有效的 HTML
<customer> <name>bob</name> <orders> <order qty="1">Jumbo Can SPAM</order> </orders> </customer>
可以“转换为” HTML
<div id='cust'> <b>bob</b> Orders: <ul> <li>Jumbo Can SPAM (1)</li> </ul> </div>
使用 XQuery,例如(未经测试)
let $customer := //customer[name='bob'] return <div id='cust'> <b>{$customer/name/text()}</b> Orders: <ul> { for $o in $customer/orders/order return <li>{$o/text()} ({$o/@qty})</li> } </ul> </div>
许多免费和商业的 XQuery 支持数据库可用。其中包括:BaseX、DB2、eXist、MarkLogic、Oracle 和 xHive。BaseX 和 eXist 是免费的,MarkLogic(也许还有其他一些)有免费的社区版本。许多(如果不是所有)都支持 HTTP 请求,因此可以用作 Web/应用程序服务器。
BaseX
BaseX 既是一个轻量级、高性能且可扩展的 XML 数据库,也是一个 XQuery 3.1 处理器,完全支持 W3C 更新和全文扩展。它专注于存储、查询和可视化大型 XML 和 JSON 文档和集合。一个可视化前端允许用户实时交互式地探索数据和评估 XQuery 表达式。BaseX 是平台独立的,并在免费的 BSD 许可下分发。(来自他们的网站)
它还具有独立模式和 Web 服务器模式。
eXist
尽管 eXist 数据库最初创建只是为了像传统数据库一样简单地存储 XML 数据,但添加到 eXist 中的丰富 REST 接口已将其转变为 Web 服务器。eXist 数据库现在能够提供一套丰富的功能,这些功能仅在其他应用程序服务器中可用。剩下的问题是应用程序开发标准,这些标准将允许大量开发 XRX 应用程序的人员共同协作。
MarkLogic
MarkLogic 也许是目前最强大的 XML 数据管理产品。它将 XML/XQuery 与文本索引和检索、地理空间、警报以及企业级可扩展性和性能相结合。
xHive(或 xDB)
xHive 是一款最先进的原生 XML 数据库,支持 XQuery,具有事务控制、广泛的索引功能和顶级可扩展性。
DB2、Oracle、PostgreSQL
DB2、Oracle 和 PostgreSQL 通过将 XML 作为大型 CLOB 字段来支持 XML,并支持对这些数据进行 XQuery 查询。PostgreSQL 目前只支持 XPath(作为 XQuery 的子集)。它检查输入值的有效性,并有支持函数来对其执行类型安全的运算。
现在可以设置 XRX 应用程序服务器以允许安装各种相互协作的应用程序。