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

XSL文件中如何在一个match模板内调用另一个match模板

问题核心原因

  • 语法错误:XSLT不允许在模板内部嵌套定义另一个模板,你把match="seconddto"的模板写在了firstdto模板内部,属于无效语法,不会被正常识别调用
  • 路径错误:根节点/下的直接子节点是<sites>,你直接调用select="firstdto"找不到对应节点,会返回空
  • 大小写错误:XSLT标签大小写敏感,<Xsl:template>要改为小写的<xsl:template>
  • 标签未闭合:<xsl:value-of select="name">缺少闭合标签</xsl:value-of>

修复后的XSL代码

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <head>
  <style>
    .....
  </style>
  </head>
  <body>
    <xsl:apply-templates select="sites/firstdto"/>
  </body>
</xsl:template>

<xsl:template match="firstdto">
  <link><xsl:value-of select="link"/></link>
  <!-- 显式调用seconddto模板,指定节点路径 -->
  <xsl:apply-templates select="/sites/seconddto"/>
  <name><xsl:value-of select="name"/></name>
</xsl:template>

<xsl:template match="seconddto">
  <link><xsl:value-of select="link"/></link>
</xsl:template>
</xsl:stylesheet>

代码说明

  • 把seconddto的模板移到firstdto模板外部,作为全局模板定义
  • 在firstdto模板内部通过绝对路径/sites/seconddto指定要调用的节点,执行对应模板就能拿到yahoo的link值
  • 根模板里只需要调用firstdto模板即可,不需要单独调用seconddto,符合你要在firstdto内部调用seconddto模板的需求
  • 输出结果完全匹配你给出的预期格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:36:04