Saxon是否提供了一种方法来维护映射中键的插入顺序



将映射序列化为JSON时,Saxon似乎不维护键的插入顺序。虽然我知道JSON不需要这一点,但它将有助于诊断和减少最终用户的困惑。

有没有什么方法可以实现这一点,也许是通过实现自定义序列化程序?还是订单在流程的早期丢失?

Saxon(Java/.NET版本(有两个XDM映射的实现,即HashTrieMap和DictionaryMap,两者都不维护顺序。两者都使用散列结构来随机化插入时的位置,因此无法恢复它。同样,SaxonJS使用的是不保留顺序的HashTrie结构。

我们自己在为SaxonJS生成SEF文件时就遇到了这个问题。这是一种基于JSON的格式,如果属性按随机顺序排列,则很难读取。因此,我们实现了序列化选项saxon:property-order,它允许您在输出中定义属性的顺序。它不允许您维护原始的输入顺序,但它允许您以对人类读者有意义的方式对输出进行排序。

像W3C规范的所有Saxon扩展一样,这需要Saxon PE或更高版本。

最新更新