plxslt

XSLT 存储过程语言

概览

扩展包名版本分类许可证语言
plxslt0.20140221LANGPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
3110plxslt-
相关扩展plpgsql pgml plpython3u pg_tle plv8 pljava plperl pllua

版本

类型仓库版本PG 大版本包名依赖
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

构建

您可以使用 pig build 命令构建 plxslt 扩展的 DEB 包:

pig build pkg plxslt         # 构建 DEB 包

安装

您可以直接安装 plxslt 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:

pig repo add pgdg -u          # 添加 PGDG 仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install plxslt;          # 当前活跃 PG 版本安装
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 plxslt;

用法

plxslt: PostgreSQL 的 XSLT 过程语言

plxslt 允许将 PostgreSQL 函数编写为 XSLT 样式表,用于转换 XML 数据。

CREATE EXTENSION plxslt;

创建 XSLT 函数

函数体是一个 XSLT 样式表。第一个参数必须是 xml 类型,用于接收输入文档:

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);

返回类型

返回类型必须与样式表的输出方法匹配:

输出方法返回类型
xmlxml
texttextvarchar
htmltextvarchar

传递参数

第一个 xml 参数之后的附加函数参数将作为 XSL 样式表参数传递:

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;

限制

  • 第一个参数必须是 xml 类型
  • 不支持触发器
  • 仅支持 XSLT 1.0 转换(通过 libxslt)

最后修改 2026-03-14: update extension metadata (953cbd0)