You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于最新Saxon HE实现动态字符串替换的技术方案咨询(从静态替换升级为动态替换)

基于Saxon HE的XSLT动态字符串替换问题

我现在遇到了一个XSLT动态替换的问题,想请教下基于最新Saxon HE的可行实现方案,具体情况如下:

需求调整

  • 原本需求是静态替换,现已调整为动态替换

给定的XML数据结构

<data>
  <replacements>
    <replace key="greeting" value='Hello' />
    <replace key="name" value='Donald' />
  </replacements>
  <rules>
    <rule key="GREETING" value="replacements/replace[@key='greeting']/@value" />
    <rule key="NAME" value="replacements/replace[@key='name']/@value" />
  </rules>
  <text> GREETING NAME duck. </text>
</data>

核心需求

需要把<text>元素里的文本内容,替换所有出现在<rules>中的key值,替换的内容是对应<rule>元素的value属性里的XPath表达式求值后的结果,最终期望得到的文本是:

Hello Donald duck.

当前尝试的代码与结果

我想到用<xsl:evaluate>来处理XPath表达式的动态求值,写了下面的XSLT代码:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0" >
  <xsl:output indent="yes"/>
  <xsl:template match="data">
    <xsl:copy>
      <xsl:evaluate xpath="/data/rules/rule[1]/@value" context-item="." />
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

运行后得到的结果是:

<data value="Hello"/>

当前遇到的困境

我已经实现了单个XPath表达式的动态求值,但没法完成完整的字符串替换;之前尝试参考Martin的方案时,遇到了XSLT与XPath混合使用不符合预期的问题,所以想请教下合适的解决办法。

内容的提问来源于stack exchange,提问作者topskip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 12:47:42