xslt将编号重置为1

时间:2016-10-20 14:49:52

标签: xslt

我有100个Employees节点。我需要生成一个xml,当id达到40时,id重置为1.如果id达到80,则id重置为1,依此类推。我可以使用for-each循环,如果mod 40 = 0则减去40,但我相信有更好的解决方案。以下是我的例子

    <?xml version="1.0" encoding="UTF-8"?>
    <EmployeeDetails>
        <Employee id="1">
            <Name>TEST</Name>
        </Employee>
        <Employee id="2">
            <Name>TEST</Name>
        </Employee>
        <Employee id="3">
            <Name>TEST</Name>
        </Employee>
        <Employee id="4">
            <Name>TEST</Name>
        </Employee>
        <Employee id="5">
            <Name>TEST</Name>
        </Employee>
        .
        .
        .
        <Employee id="122">
            <Name>TEST</Name>
        </Employee>
    </EmployeeDetails>

和期望的输出:

<?xml version="1.0" encoding="UTF-8"?>
<EmployeeDetails>
    <Employee id="1">
        <Name>TEST</Name>
    </Employee>
    <Employee id="2">
        <Name>TEST</Name>
    </Employee>
    .
    .
    .
    <Employee id="40">
        <Name>TEST</Name>
    </Employee>
    <Employee id="1">
        <Name>TEST</Name>
    </Employee>
    <Employee id="2">
        <Name>TEST</Name>
    </Employee>
    ..
    .
    .

<Employee id="40">
        <Name>TEST</Name>
    </Employee> .
    .Employee id="1">
        <Name>TEST</Name>
    </Employee>.
    .
    .
    <Employee id="40">
        <Name>TEST</Name>
    </Employee>
    <Employee id="1">
        <Name>TEST</Name>
    </Employee>
    .Employee id="2">
        <Name>TEST</Name>
    </Employee>
</EmployeeDetails>
你能帮帮忙吗? 非常感谢提前。

1 个答案:

答案 0 :(得分:0)

<xsl:value-of select="((position() - 1) mod 40) + 1"/>

从1 ... 40(含)开始,然后再从1开始。

当然,您可以使用除position()之外的其他数字作为基础。