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

使用XSLT从XML源文件提取元素文本的问题

问题解决思路

你的问题出在两个核心点:

  • XML里的名字是givenname(属于subscriber元素的属性),但你写的select="forename"既找错了名称,又没加@前缀——XSL里必须用@来标识要访问的是元素属性,而非子元素。
  • 你的XSL代码未闭合<entry>和<xsl:template>标签,这会导致语法解析错误。
修正后的完整XSL代码
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <output>
            <xsl:apply-templates select="mailList/subscriber"/>
        </output>
    </xsl:template>

    <xsl:template match="subscriber">
        <entry>
            <firstname>
                <xsl:value-of select="@givenname"/>
            </firstname>
            <lastname>
                <xsl:value-of select="@familyname"/>
            </lastname>
            <email>
                <xsl:value-of select="@email"/>
            </email>
        </entry>
    </xsl:template>
</xsl:stylesheet>
关键说明
  • @givenname:通过@前缀精准定位subscriber元素的givenname属性,这是你之前缺失的核心语法。
  • 根模板match="/":触发整个XML文档的转换逻辑,通过apply-templates遍历所有subscriber节点。
  • 闭合所有标签:确保XSL语法合法,避免解析器报错。

用这段代码处理你的XML,会生成如下结构化输出:

<output>
    <entry>
        <firstname>Jon</firstname>
        <lastname>Smith</lastname>
        <email>js@somewhere.com</email>
    </entry>
    <entry>
        <firstname>Luke</firstname>
        <lastname>Sky</lastname>
        <email>sov.com</email>
    </entry>
</output>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:05:23