背景
使用XML和XSL创建网站。PostgreSQL数据库结构化表示所需的XML文档。PostgreSQL提供了许多与XML相关的函数,列在:
http://www.postgresql.org/docs/current/static/functions-xml.html
这是一个不同于将XML转换为数据库的问题,对此有许多解决方案。
更新: 为了澄清,此问题不涉及使用给定URL中列出的XML函数。它涉及基于将数据库表(和JOIN
条件)映射到XPath表达式的通用解决方案来创建XML文档。
更新: 进一步澄清,XQuery用于搜索XML文档,就像它们是数据库一样 - 类似于XPath和SQL之间的交叉。我有一个数据库,想要生成一个XML文档。XML文档的结构应以XPath表达式映射到表和列的方式给出,而不是以XML函数的方式给出。
问题
我想解决的问题是使用PostgreSQL将表行中的值映射到XPath值。下面的示例用于说明问题。
示例
XPath映射,这就是这个问题的全部内容:
root > people
person > person
person.first_name -> name/first
person.last_name -> name/last
person.age -> [@age]
account.person_id => person.person_id
account > person/account
account.number -> [@id]
一个 PERSON
表可能如下:
person_id | first_name | last_name | age
123 | Peter | Parker | 18
456 | James | Jameson | 42
而一个 ACCOUNT
表可能如下:
account_id | person_id | number
1 | 123 | 123456789
使用XPath映射查询数据库将生成以下XML文档:
<people>
<person age="18">
<name>
<first>Peter</first>
<last>Parker</last>
</name>
<account id="123456789" />
</person>
<person age="42">
<name>
<first>James</first>
<last>Jameson</last>
</name>
</person>
</people>
在这种情况下,James Jameson没有账户,因此相应的XML元素(
account
)不包括在最终文档中。这是一个困难的问题,完全的解决方案并非必要。解决80%的简单表映射到简单的XML元素和属性的方案就足够了。
问题:
如何创建一个SQL语句(或过程),根据数据库表格(和一些JOIN操作)与XPaths(或类似的内容)的映射来返回XML文档以执行数据转换?
是否有任何技术或开源实现已经执行这样的任务?
谢谢!
相关链接 商业软件