基于Saxon的XML管道与函数式转换链
利用Saxon的XSLT 3.0和XPath 3.1特性,设计无副作用的管道式多阶段处理,包括参数化步骤、动态加载以及结果重定向。 · 难度:入门 · +10XP
基于Saxon的XML管道与函数式转换链
从单文件XSLT到企业级管道,本教程教你如何使用Saxon的s9api接口串联多个转换(XSLT和XQuery)。重点讲解如何通过xsl:result-document将中间结果传给下一步,利用xsl:mode on-no-match="shadow"避免重复代码,以及如何使用fold-left这类高阶函数在XSLT内部实现递归管道。你会体会到真正的声明式数据处理,而非命令式脚本。
<xsl:template name="pipeline">
<xsl:param name="input" as="document-node()"/>
<xsl:variable name="step1">
<xsl:apply-templates select="$input" mode="clean"/>
</xsl:variable>
<xsl:variable name="step2">
<xsl:apply-templates select="$step1" mode="enrich"/>
</xsl:variable>
<xsl:sequence select="$step2"/>
</xsl:template>