Eu tenho uma necessidade de acrescentar registros de preenchimento a um arquivo que está sendo gerado com XSLT. A necessidade é arredondar o número total de linhas no arquivo até o número 10 mais próximo, de forma que exista o seguinte:
FileHeader
SectionHeader
Detail
Detail
Detail
SectionFooter
FileFooter
O número total de linhas seria 7 e eu precisaria adicionar 3 registros de preenchimento para fazer:
FileHeader
SectionHeader
Detail
Detail
Detail
SectionFooter
FileFooter
[Filler Record]
[Filler Record]
[Filler Record]
Devo apenas incrementar uma variável no xslttoda vez que eu escrevo uma linha e a uso para fazer a matemática no final, ou existe uma maneira do xslt / xpath saber quantas linhas ele está atualmente escrito, de modo que haja alguma chamada de função mais confiável que eu possa fazer isso vai me dar essa contagem?
Respostas:
2 para resposta № 1Não existe uma maneira de incrementar uma variável no XSLT. O XSLT também não pode informar quantas linhas foram escritas até agora (porque o XSLT foi projetado para preferir a independência de ordem de execução).
Em vez disso, você pode
Faça um cálculo separado (por ex. contagem) de quantos registros a folha de estilo deve produzir através de outros modelos baseados no documento de entrada. Este é o método mais fácil, se o número de registros de saída for igual ao número de registros de entrada, ou pelo menos um é facilmente previsto com base no outro. Ou,
Capture o resultado da sua transformação inicial em uma variável (usando o
nodeset
extensão ou usando XSLT 2.0) e, em seguida, executarcount()
nele para determinar o número de registros nele. Então faça umxsl:copy-of
para produzir o resultado capturado, seguido por qualquer preenchimento necessário.