#xslt
#xslt
Вопрос:
У меня 100 узлов сотрудников. Мне нужно сгенерировать xml, чтобы при достижении идентификатора 40 идентификатор сбрасывался на 1. Если идентификатор достигает 80, то идентификатор сбрасывается обратно на 1, и так далее. Я могу использовать цикл для каждого, и если 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. Пожалуйста, опубликуйте также свой xslt. Спасибо.
Ответ №1:
<xsl:value-of select="((position() - 1) mod 40) 1"/>
начинается с 1 .. 40 (включительно), а затем снова начинается с 1.
Конечно, вы можете использовать в качестве основы какое-либо другое число, отличное от position()
.
Комментарии:
1. Когда правильная скобка была установлена, она начала работать
2. <xsl: имя переменной=»d» select=»((позиция() — 1) mod 40) 1″/>
3. @user3269443 работал для меня без, но вы правы, для этого нужны круглые скобки.