我想问一下如何通过 XSLT 重新编号 LINENUM 和 PARENTID 中的引用。LINENUM 应该按正确的顺序排列。当前有 1、4、5,因为使用了 position(),这是不正确的。如果 LINENUM 是子项且在 PARENTID 中有引用编号,则 LINENUM 可能为空。如果 LINENUM 为空,则不应按顺序计算。此外,可能只有父记录而没有子项。这里有一个简单的 xml 示例。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<data>
<line>
<LINENUM>1</LINENUM>
<PARENTID/>
<IDACTION>240730180714572</IDACTION>
</line>
<line>
<LINENUM/>
<PARENTID>1</PARENTID>
<IDACTION></IDACTION>
</line>
<line>
<LINENUM/>
<PARENTID>1</PARENTID>
<IDACTION>240730180714573</IDACTION>
</line>
<line>
<LINENUM>4</LINENUM>
<PARENTID></PARENTID>
<IDACTION>240730180714575</IDACTION>
</line>
<line>
<LINENUM>5</LINENUM>
<PARENTID/>
<IDACTION>240730180714578</IDACTION>
</line>
<line>
<LINENUM/>
<PARENTID>5</PARENTID>
<IDACTION>240730180714579</IDACTION>
</line>
<line>
<LINENUM/>
<PARENTID>5</PARENTID>
<IDACTION>2407301807145712</IDACTION>
</line>
</data>
预期结果如下。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<data>
<line>
<LINENUM>1</LINENUM>
<PARENTID/>
<IDACTION>240730180714572</IDACTION>
</line>
<line>
<LINENUM/>
<PARENTID>1</PARENTID>
<IDACTION></IDACTION>
</line>
<line>
<LINENUM/>
<PARENTID>1</PARENTID>
<IDACTION>240730180714573</IDACTION>
</line>
<line>
<LINENUM>2</LINENUM>
<PARENTID></PARENTID>
<IDACTION>240730180714575</IDACTION>
</line>
<line>
<LINENUM>3</LINENUM>
<PARENTID/>
<IDACTION>240730180714578</IDACTION>
</line>
<line>
<LINENUM/>
<PARENTID>3</PARENTID>
<IDACTION>240730180714579</IDACTION>
</line>
<line>
<LINENUM/>
<PARENTID>3</PARENTID>
<IDACTION>2407301807145712</IDACTION>
</line>
</data>