plxslt

XSLT procedural language for PostgreSQL

Overview

PackageVersionCategoryLicenseLanguage
plxslt0.20140221LANGPostgreSQLC
IDExtensionBinLibLoadCreateTrustRelocSchema
3110plxsltNoYesNoYesNoYes-
Relatedplpgsql pgml plpython3u pg_tle plv8 pljava plperl pllua

Version

TypeRepoVersionPG VerPackageDeps
EXTPGDG0.201402211817161514plxslt-
RPMPGDG0.201402211817161514plxslt_$v-
DEBPIGSTY0.201402211817161514postgresql-$v-plxslt-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
u22.x86_64
u22.aarch64
u24.x86_64
u24.aarch64

Build

You can build the DEB packages for plxslt using pig build:

pig build pkg plxslt         # build DEB packages

Install

You can install plxslt directly. First, make sure the PGDG repository is added and enabled:

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

Install the extension using pig or apt/yum/dnf:

pig install plxslt;          # Install for current active PG version
pig ext install -y plxslt -v 18  # PG 18
pig ext install -y plxslt -v 17  # PG 17
pig ext install -y plxslt -v 16  # PG 16
pig ext install -y plxslt -v 15  # PG 15
pig ext install -y plxslt -v 14  # PG 14
dnf install -y plxslt_18       # PG 18
dnf install -y plxslt_17       # PG 17
dnf install -y plxslt_16       # PG 16
dnf install -y plxslt_15       # PG 15
dnf install -y plxslt_14       # PG 14
apt install -y postgresql-18-plxslt   # PG 18
apt install -y postgresql-17-plxslt   # PG 17
apt install -y postgresql-16-plxslt   # PG 16
apt install -y postgresql-15-plxslt   # PG 15
apt install -y postgresql-14-plxslt   # PG 14

Create Extension:

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 Modified 2026-03-12: add pg extension catalog (95749bf)