Xslt 使用累加器规则记住上下文信息

Xslt 使用累加器规则记住上下文信息,xslt,saxon,xslt-3.0,Xslt,Saxon,Xslt 3.0,简短问题: 为什么我的xsl:acculator规则 不适用于Saxon PE 9.9,但适用于XSL Professional 2020 sp1。Saxon报告的错误是: 计算错误(fn:在(…)之前的累加器)= fn:xsl:when/@test中第45行第100列(…)之后的累加器 format.xslt:XPTY0004:不允许将空序列作为 fn的第二个参数:substring()。第一次雾化时发现的 match=“pattern matching”模板规则中“=”的操作数 node()

简短问题:

为什么我的
xsl:acculator规则
不适用于Saxon PE 9.9,但适用于XSL Professional 2020 sp1。Saxon报告的错误是:

计算错误(fn:在(…)之前的累加器)= fn:xsl:when/@test中第45行第100列(…)之后的累加器 format.xslt:XPTY0004:不允许将空序列作为 fn的第二个参数:substring()。第一次雾化时发现的 match=“pattern matching”模板规则中“=”的操作数 node()/element(Q{}MessageFormat)/element(Q{}StructFormat)[(not(attribute::attribute(Q{}repeat))) 和format.xslt第82行的child::element(Q{}TagField)] 由内置模板规则调用(浅复制) 由xsl调用:在文件:/D:/issue/pfr-transportevent-v01/config/transformation/xslt/format.xslt#102中应用模板 在format.xslt第101行的过程complete struct中: 由format.xslt的第104行上带有match=“/”的模板规则中的全局xsl:variable调用,不允许将空序列作为 fn的第二个参数:substring()。第一次雾化时发现的 “=”的操作数

这是我完整的
xsl:acculator


背景:

我必须解决以下问题,例如,输入是可变长度的纯文本

"H0 EVU_DBSRD PVG Z24 ABF-RF IR 011219-12-10-14.46.18.553122NJJNNM1 80142455360001 M2 10.12.201914:40:00Z1 RABWR1 10.12.2019 10.12.201914:40:00 0000R1 00133807843874880201912103988920191210153041932534695 000 NNR1 002338078480716 201912101446013716142455 000 NN R1 0032471437015580201912103961427201912101200186865346965 000 NNR1 00433807840438580201912103984329201912101530381256346965000 NNR1 00524714273013180201912093997400201912090900494682346965000 NNR100637847829609880201912104006488201912101530572232346965000 NN R1 0073780736474280201912103954824201912101530128369346965000 NN R1 008338079134858201912101446013858142455 000 NN R1 00933807849379280201912103979328201912101530334318346965 000 NN R1 010378478296494802019121039909822019121015304332346965000 NN R1 011338078414616 201912101446013616142455 000 NN“

(我将文本置于引号中,以便在最后一个字符N后保留空格)

预期结果如下:


EVU_DBSRD
PVG
Z
24
ABF-RF
我
R
11
2019-12-10-14.46.18.553122
N
J
J
N
N
J
N
80
142455
36
0001
10.12.201914:40:00
RABWR1
10.12.2019
10.12.201914:40:00
0000
1.
338078438748
80201912103988789
201912101530419325346965
0
N
N
2.
338078480716
201912101446013716142455
0
N
N
3.
247143701255
80201912103961427
201912101200186865346965
0
N
N
4.
338078404385
80201912103984329
201912101530381256346965
0
N
N