Отбросьте фигурные скобки, т.е. используйте test="count(employmentNav/EmpEmployment/compInfoNav/EmpCompensation/startDate) >= count(employmentNav/EmpEmployment/jobInfoNav/EmpJob/startDate)"
. Я также думаю, что вам нужно xsl:choose/xsl:when test/xsl:otherwise
вместо одного xsl:if
, если вам действительно нужно выполнить две разные ветви кода.
Поскольку вы пометили свой вопрос для XSLT 2.0 и XSLT 3.0, возможно, будет возможно решать вещи на уровне выражения XPath с помощью выражения if (conditional expression) then expression1 else expression2
, например,
if (count(employmentNav/EmpEmployment/compInfoNav/EmpCompensation/startDate) >= count(employmentNav/EmpEmployment/jobInfoNav/EmpJob/startDate)) then mf:foo() else mf:bar()
, где mf:foo
и mf:bar
будут пользовательскими функциями, настроенными с помощью xsl:function
.
Полное описание с разговорами о циклах звучит так, как будто вы пытаетесь использовать процедурное программирование с XSLT, вы можете показать нам небольшие, но репрезентативные выборки XML ввода, вывода, которые вы хотите вместе с правилами, которые вы хотите реализовать, чтобы мы могли быть в состоянии предложить более XSLT-подобный подход.