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

如何在XML文件中嵌入SVG并通过XSLT转换为内嵌SVG的HTML

方案可行性解答:用XSLT将含内嵌SVG的XML转为可离线打开的HTML

完全可行,这是XSLT处理XML内容并生成HTML输出的典型适用场景,只要调整XSLT代码中提取SVG的方式,就能实现你想要的离线HTML效果。

问题所在

你当前的XSLT代码中,处理<Plot>节点时使用了<xsl:value-of select="."/>,这个指令只会提取节点的文本内容,无法保留SVG的XML节点结构,导致最终HTML里的SVG变成纯文本而非可渲染的图表元素。

修正后的XSLT示例

把提取Plot内容的代码替换为<xsl:copy-of select="node()"/>,它会完整复制<Plot>内部的所有节点(包括SVG标签及其子元素)到HTML中:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <html>
      <head>
        <!-- 可添加自定义样式或元数据 -->
        <title>数据与SVG图表</title>
      </head>
      <body>
        <!-- 处理Data节点,生成数据展示区域 -->
        <div class="data-container">
          <xsl:for-each select="//Data">
            <p><xsl:value-of select="Something"/></p>
          </xsl:for-each>
        </div>
        <!-- 处理Plot节点,内嵌SVG图表 -->
        <div class="chart-container">
          <xsl:for-each select="//Plot">
            <xsl:copy-of select="node()"/>
          </xsl:for-each>
        </div>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

效果验证

使用修正后的XSLT转换XML后,生成的HTML会包含完整的SVG节点结构,无需依赖外部资源,直接离线打开就能正常显示数据内容和SVG图表,完全符合你的预期输出。

内容的提问来源于stack exchange,提问作者Massimo Oss Noser

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 10:52:18