我的问题如下:在包含节点和边的结构中,我想添加边以访问所有节点。输入可能是这样的:
<graph>
<item id="1" type="entry">
</item>
<item id="2" type="incoming">
</item>
<item id="3" type="incoming">
</item>
<item id="4" type="body">
<connection>6</connection>
</item>
<item id="5" type="declaration"></item>
<item id="6" type="contents">
<connection>7</connection>
</item>
<item id="7" type="contents">
<connection>8</connection>
</item>
<item id="8" type="contents"></item>
</graph>
如您所见,所有元素都没有完整的“连接”路径。路径应该通过访问(按给定顺序)所有@type='incoming'、所有@type='declaration'和最后@type='body'来完成,让所有其他连接保持原样。像:
<graph>
<item id="1" type="entry">
<connection>2</connection>
</item>
<item id="2" type="incoming">
<connection>3</connection>
</item>
<item id="3" type="incoming">
<connection>5</connection>
</item>
<item id="4" type="body">
<connection>6</connection>
</item>
<item id="5" type="declaration">
<connection>4</connection>
</item>
<item id="6" type="contents">
<connection>7</connection>
</item>
<item id="7" type="contents">
<connection>8</connection>
</item>
<item id="8" type="contents"></item>
</graph>
我不知道如何实现这一点,因为我必须“记住”我访问过哪些节点。使用 XSLT-2.0 可以实现类似的功能吗?谢谢你的帮助!
ps项目不一定按上面的id排序。