plxslt
plxslt
plxslt : XSLT procedural language for PostgreSQL
Overview
| ID | Extension | Package | Version | Category | License | Language |
|---|---|---|---|---|---|---|
| 3110 | plxslt | plxslt | 0.20140221 | LANG | PostgreSQL | C |
| Attribute | Has Binary | Has Library | Need Load | Has DDL | Relocatable | Trusted |
|---|---|---|---|---|---|---|
--s-d-r | No | Yes | No | Yes | yes | no |
| Relationships | |
|---|---|
| See Also | plpgsql pgml plpython3u pg_tle plv8 pljava plperl pllua |
Packages
| Type | Repo | Version | PG Major Compatibility | Package Pattern | Dependencies |
|---|---|---|---|---|---|
| EXT | PGDG | 0.20140221 | 18 17 16 15 14 | plxslt | - |
| RPM | PGDG | 0.20140221 | 18 17 16 15 14 | plxslt_$v | - |
| DEB | PIGSTY | 0.20140221 | 18 17 16 15 14 | postgresql-$v-plxslt | - |
| Linux / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
el8.x86_64 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 |
el8.aarch64 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 |
el9.x86_64 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 |
el9.aarch64 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 |
el10.x86_64 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 |
el10.aarch64 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 | PGDG 0.20140221 |
d12.x86_64 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 |
d12.aarch64 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 |
d13.x86_64 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 |
d13.aarch64 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 |
u22.x86_64 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 |
u22.aarch64 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 |
u24.x86_64 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 |
u24.aarch64 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 | PIGSTY 0.20140221 |
Source
pig build pkg plxslt; # build debInstall
Make sure PGDG repo available:
pig repo add pgdg -u # add pgdg repo and update cacheInstall this extension with pig:
pig install plxslt; # install via package name, for the active PG version
pig install plxslt -v 18; # install for PG 18
pig install plxslt -v 17; # install for PG 17
pig install plxslt -v 16; # install for PG 16
pig install plxslt -v 15; # install for PG 15
pig install plxslt -v 14; # install for PG 14Create this extension with:
CREATE EXTENSION plxslt;Usage
plxslt enables writing PostgreSQL functions as XSLT stylesheets for transforming XML data.
CREATE EXTENSION plxslt;Create XSLT Functions
The function body is an XSLT stylesheet. The first parameter must be of type xml and receives the input document:
CREATE FUNCTION extract_title(xml) RETURNS xml AS $$
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:value-of select="//title"/>
</xsl:template>
</xsl:stylesheet>
$$ LANGUAGE xslt;
SELECT extract_title('<doc><title>Hello World</title></doc>'::xml);Return Types
The return type must match the stylesheet’s output method:
| Output Method | Return Type |
|---|---|
xml | xml |
text | text or varchar |
html | text or varchar |
Passing Parameters
Additional function parameters beyond the first xml parameter are passed as XSL stylesheet parameters:
CREATE FUNCTION transform_with_param(xml, text) RETURNS xml AS $$
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="arg2"/>
<xsl:template match="/">
<result>
<xsl:value-of select="$arg2"/>
</result>
</xsl:template>
</xsl:stylesheet>
$$ LANGUAGE xslt;Limitations
- First parameter must be
xmltype - Triggers are not supported
- Only XSLT 1.0 transformations are supported (via libxslt)
Last updated on