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

如何创建嵌套XSLT输出?需传入Page Count和Detail Count参数

没问题,我来帮你实现这个需求!我们可以通过XSLT的参数传递和循环逻辑,轻松生成你需要的嵌套XML结构。

实现基于参数的嵌套XML结构生成

首先,我们需要在XSLT中定义两个接收外部输入的参数,再通过循环和位置计算来生成对应层级的节点。

完整XSLT代码示例

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- 定义两个可外部传入的参数,同时设置默认值备用 -->
    <xsl:param name="PageCount" select="1"/>
    <xsl:param name="DetailCount" select="3"/>

    <xsl:template match="/">
        <LayOut>
            <!-- 循环生成每个Pages节点 -->
            <xsl:for-each select="1 to $PageCount">
                <Pages>
                    <!-- 当前页码 -->
                    <Page><xsl:value-of select="."/></Page>
                    <!-- 生成当前页对应的所有Detail元素 -->
                    <xsl:for-each select="1 to $DetailCount">
                        <Detail>
                            <!-- 计算连续的Detail编号:(当前页-1)*每页Detail数 + 当前Detail位置 -->
                            <xsl:value-of select="(current() - 1)*$DetailCount + position()"/>
                        </Detail>
                    </xsl:for-each>
                </Pages>
            </xsl:for-each>
        </LayOut>
    </xsl:template>
</xsl:stylesheet>

关键逻辑解释

  • 参数定义:通过<xsl:param>声明PageCount(总页数)和DetailCount(每页Detail数量),支持外部传入值,也设置了默认值方便测试。
  • 外层循环:1 to $PageCount会生成从1到总页数的序列,每个值对应一个<Pages>节点,<Page>的内容就是当前循环的页码。
  • 内层循环:每个<Pages>下生成指定数量的<Detail>元素,通过(current() - 1)*$DetailCount + position()计算连续的编号,确保Detail序号跨页后不会重置(比如第2页的第一个Detail编号就是(2-1)*3+1=4,和你给出的示例完全匹配)。

测试效果

当传入PageCount=2、DetailCount=3时,输出的XML结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<LayOut>
    <Pages>
        <Page>1</Page>
        <Detail>1</Detail>
        <Detail>2</Detail>
        <Detail>3</Detail>
    </Pages>
    <Pages>
        <Page>2</Page>
        <Detail>4</Detail>
        <Detail>5</Detail>
        <Detail>6</Detail>
    </Pages>
</LayOut>

如果需要调整参数,只需要在调用XSLT处理器时传入对应值即可,比如用Saxon处理器的命令示例:

java -jar saxon.jar -s:input.xml -xsl:your-stylesheet.xsl -o:output.xml PageCount=5 DetailCount=4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:57:06