我有一个单一的“用户”列表,与其他“用户”有父子关系。用户的“父母”是批准者 ID。我需要对这个列表进行排序,以便列表中没有任何孩子可以使用 XSLT 2.0。示例输入 xml:
<userList>
<user>
<userID>4</userID>
<approverID>2</approverID>
</user>
<user>
<userID>5</userID>
<approverID>2</approverID>
</user>
<user>
<userID>3</userID>
<approverID>1</approverID>
</user>
<user>
<userID>2</userID>
<approverID>1</approverID>
</user>
<user>
<userID>1</userID>
<approverID>10</approverID>
</user>
<user>
<userID>6</userID>
<approverID>7</approverID>
</user>
<user>
<userID>7</userID>
<approverID>10</approverID>
</user>
</userList>
会有一个父子结构(不确定显示它的最佳方式)
1 { 2 {4,5} , 3}
7 {6 }
输出 XML 可能看起来像
<userList>
<user>
<userID>1</userID>
<approverID>10</userID>
</user>
<user>
<userID>2</userID>
<approverID>1</approverID>
</user>
<user>
<userID>3</userID>
<approverID>1</approverID>
</user>
<user>
<userID>4</userID>
<approverID>2</approverID>
</user>
<user>
<userID>5</userID>
<approverID>2</approverID>
</user>
<user>
<userID>7</userID>
<approverID>10</approverID>
</user>
<user>
<userID>6</userID>
<approverID>7</approverID>
</user>
</userList>
唯一的要求是子用户永远不会出现在父用户之前,但除此之外它无论如何都可以排序。我觉得我可以递归地做到这一点,但我知道这不是像 XSLT 这样的函数式编程语言的最佳选择。