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

XML转HTML:如何使用XSLT设置a标签的href属性?

解决XSLT中设置a标签href属性的问题

Hey there! 我看到你卡在给<a>标签的href属性赋值对应团队的web地址这一步了,这其实是XSLT里很常用的操作,我来帮你搞定~

首先,先纠正你现有XSLT里一个小问题:你开头的<xsl:apply-templates select="team"/>是多余的,而且它会在<html>标签之前输出内容,导致最终的HTML结构不合法,所以先把这行删掉。

接下来就是核心的href属性设置,在XSLT 1.0里,有两种常用的方式来实现:

方法1:使用属性值模板(更简洁)

属性值模板是用大括号{}包裹XPath表达式,XSLT会自动计算表达式的结果并替换成属性值。针对你的场景,只需要把<a>标签改成这样:

<a href="{web}">Show more</a>

这里的web是当前team节点下的子节点,大括号会自动取出它的文本内容作为href的值。

方法2:使用<xsl:attribute>标签

如果你更习惯显式的属性设置方式,也可以用<xsl:attribute>来定义href属性:

<a>
  <xsl:attribute name="href">
    <xsl:value-of select="web"/>
  </xsl:attribute>
  Show more
</a>

完整的修正后XSLT代码

把这些修改整合后,你的XSLT应该是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="html"/>
  <xsl:template match="/">
    <html>
      <head>
        <title>teams</title>
        <meta charset="UTF-8"/>
      </head>
      <body>
        <table>
          <tr>
            <th>Cod</th> <!-- 这里建议用<th>代替<td>,更符合表头的语义 -->
            <th>Web</th>
          </tr>
          <xsl:for-each select="teams/team">
            <tr>
              <td><xsl:value-of select="@cod"/></td>
              <td><a href="{web}">Show more</a></td>
            </tr>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

另外小提醒一下:表头用<th>标签会比<td>更符合HTML的语义化规范,我也帮你调整了这个地方~

这样转换之后,每个“Show more”链接就会正确指向对应团队的web地址啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 14:22:39