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

如何用XSLT统计XML段落数并在HTML中显示带编号段落

嘿,刚入门XSLT就能搞定段落总数统计已经很厉害了!要实现带编号的段落展示其实没那么复杂,我给你两种简单实用的方法,结合你的XML示例来讲解:

方法一:用<xsl:number>生成规范编号

<xsl:number>是XSLT专门用来生成编号的元素,灵活性很高,适合这种段落编号场景。下面是完整的XSLT代码:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" encoding="UTF-8" indent="yes"/>

  <xsl:template match="/">
    <html>
      <body>
        <!-- 先展示段落总数 -->
        <p>段落总数:<xsl:value-of select="count(//troonrede/paragraph)"/></p>
        
        <!-- 遍历每个段落并添加编号 -->
        <xsl:for-each select="//troonrede/paragraph">
          <p>
            <!-- count="paragraph" 指定只统计paragraph元素,format定义编号格式 -->
            <xsl:number count="paragraph" format="1. "/>
            <!-- 输出段落内容 -->
            <xsl:value-of select="."/>
          </p>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

这段代码会输出带1. 、2. 前缀的段落,同时保留你之前的总数统计功能。

方法二:用position()函数快速生成编号

如果你需要更简单的实现,直接用<xsl:for-each>里的position()函数就能获取当前段落的序号,代码更简洁:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" encoding="UTF-8" indent="yes"/>

  <xsl:template match="/">
    <html>
      <body>
        <p>段落总数:<xsl:value-of select="count(//troonrede/paragraph)"/></p>
        
        <xsl:for-each select="//troonrede/paragraph">
          <p>
            <!-- position()返回当前段落的位置序号,直接拼接格式即可 -->
            <xsl:value-of select="position()"/>. <xsl:value-of select="."/>
          </p>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

小提示

  • 两种方法都能满足你的需求:<xsl:number>适合后续可能有嵌套结构的复杂编号,position()更适合这种平级段落的简单场景。
  • 你的XML里的&euml;实体,XSLT会自动正确解析成ë,不用额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:33:49