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

XSL模板生成XML无序列表时项目符号不显示问题求助

解决XSL生成无序列表但项目符号不显示的问题

别着急,你的XSL模板核心结构是没问题的,咱们一步步排查问题所在:

1. 先确认转换后的HTML输出是否正确

你的XSL代码应该能生成标准的HTML无序列表结构:

<ul>
  <li>First item</li>
  <li>Second item</li>
</ul>

先检查转换后的实际输出是不是这个样子:

  • 如果输出不对,问题出在XSL转换环节;
  • 如果输出完全符合上面的结构,那项目符号不显示基本是CSS样式覆盖了默认行为导致的。

2. 排查CSS样式干扰

浏览器默认会给<ul>和<li>显示项目符号,但自定义CSS很容易把它隐藏掉,你可以检查这几点:

  • 是否有list-style-type: none或list-style: none应用在你的<ul>/<li>上;
  • 是否设置了padding-left: 0或margin-left: 0,导致项目符号被挤出可视区域。

解决办法是给列表加上明确的样式,强制显示项目符号:

ul {
  list-style-type: disc; /* 可选值还有circle、square,按需选择 */
  padding-left: 2em; /* 给项目符号留出足够的显示空间 */
}

3. 检查XSL的输出配置

如果你的XSL没有指定输出方法为HTML,可能会生成XML格式的HTML(比如自闭合标签、缺少DOCTYPE),部分旧浏览器解析时会出现异常。建议在XSL的根节点下添加输出配置:

<xsl:output method="html" indent="yes"/>

4. 确认列表内容是否正确渲染

你的XSL里用了<xsl:apply-templates select="./para"/>,但如果没有专门处理<para>或<literal>的模板,XSL的默认模板虽然会输出文本,但如果<literal>有特殊命名空间或格式,可能导致内容没显示——空的<li>标签几乎看不到项目符号。

你可以先做个测试,直接输出文本内容:

<xsl:template match="unorderedList">
  <ul>
    <xsl:for-each select="listitem">
      <li>
        <xsl:value-of select="para/literal"/>
      </li>
    </xsl:for-each>
  </ul>
</xsl:template>

如果这样能看到项目符号和内容,说明你需要给<para>或<literal>编写专门的模板来正确输出内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:30:59