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

如何将指定XML节点传入<xsl:call-template>模板?已尝试xsl:param未果

实现XML中target节点传入update.target模板的正确方法

要把target节点传入指定模板,核心是用<xsl:param>定义接收参数,再用<xsl:with-param>传递节点,具体修改如下:

关键修改点

  • 在update.target模板中添加<xsl:param>,声明用于接收target节点的参数(比如命名为$target-node)
  • 在<xsl:call-template>内部用<xsl:with-param>,通过select属性指定要传递的target节点路径

修改后的完整XSLT代码

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html> 
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>

<xsl:template match="catalog">
  <xsl:if test="cd/target">
    <xsl:call-template name="update.target">
      <!-- 传递第一个找到的target节点,若要处理所有可改用循环 -->
      <xsl:with-param name="target-node" select="cd/target"/>
    </xsl:call-template>
  </xsl:if>
</xsl:template>

<xsl:template name="update.target">
  <!-- 声明接收节点的参数 -->
  <xsl:param name="target-node"/>
  <!-- 示例:输出target节点内的内容 -->
  <div>
    <p>First Name: <xsl:value-of select="$target-node/first"/></p>
    <p>Last Name: <xsl:value-of select="$target-node/second"/></p>
  </div>
</xsl:template>
</xsl:stylesheet>

说明

  • select="cd/target"会选中catalog下第一个cd里的target节点,如果需要处理所有含target的cd节点,可以改用<xsl:for-each select="cd[target]">包裹call-template,逐个传递
  • 在update.target模板中,通过$target-node就能访问传入的节点,比如$target-node/first获取first子节点的文本值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:20:29