Map table data to XPath expressions - Mailing list pgsql-novice

From Thangalin
Subject Map table data to XPath expressions
Date
Msg-id CAANrE7oF=GPkvr83LJxWT=647dms0Ap679ir4XZ73M7xf9AFDw@mail.gmail.com
Whole thread Raw
List pgsql-novice
Hi, all.

Am wondering if a feature exists in PostgreSQL that allows mapping tables and columns to XPath expressions. For example, consider the following map, "person-account":

person            -> people
person.first_name -> person/name/first
person.last_name  -> person/name/last
person.age        -> person[@age]
account.person_id => person.person_id     -- JOIN clause
account.number    -> person/account[@id]

This would allow the following query (or similar):

SELECT * FROM xml.person-account;

And produce the following string (or rows of strings that the calling client needs to append):

<people>
  <person age="18">
    <name>
      <first>Peter</first>
      <last>Parker</last>
    </name>
    <account id="123456789" />
  </person>
  <!-- etc. --->
</people>

I know it can be built using the XML functions that exist in PostgreSQL 9. I am looking for a solution that would not entail having to write a fair bit of code, such as (without the joining to the account table):
SELECT
xmlelement( name "people",
xmlagg(
xmlelement( name "person",
xmlattributes(age),
xmlforest( first_name as first, last_name as last )
)
)
)
FROM person;
I'm not looking for a perfect solution, but something rather simple that could handle 80% of the cases.

Thank you!

pgsql-novice by date:

Previous
From: "Jean-Yves F. Barbier"
Date:
Subject: creating utf-8 random strings
Next
From: Michael Wood
Date:
Subject: Re: creating utf-8 random strings