plxslt

plxslt : XSLT procedural language for PostgreSQL

Overview

IDExtensionPackageVersionCategoryLicenseLanguage
3110
plxslt
plxslt
0.20140221
LANG
PostgreSQL
C
AttributeHas BinaryHas LibraryNeed LoadHas DDLRelocatableTrusted
--s-d-r
No
Yes
No
Yes
yes
no
Relationships
See Also
plpgsql
pgml
plpython3u
pg_tle
plv8
pljava
plperl
pllua

Packages

TypeRepoVersionPG Major CompatibilityPackage PatternDependencies
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 / PGPG18PG17PG16PG15PG14
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 deb

Install

Make sure PGDG repo available:

pig repo add pgdg -u    # add pgdg repo and update cache

Install 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 14

Create this extension with:

CREATE EXTENSION plxslt;

Usage

plxslt: XSLT procedural language for PostgreSQL

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 MethodReturn Type
xmlxml
texttext or varchar
htmltext 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 xml type
  • Triggers are not supported
  • Only XSLT 1.0 transformations are supported (via libxslt)
Last updated on