使用XSLT2.0添加图形边/引用

使用XSLT2.0添加图形边/引用,xslt,xpath,xslt-2.0,Xslt,Xpath,Xslt 2.0,我的问题如下:在包含节点和边的结构中,我想添加边以访问所有节点。输入可以是一些 比如: <graph> <item id="1" type="entry"> </item> <item id="2" type="incoming"> </item> <item id="3" type="incoming"> </item> <item id="4" t

我的问题如下:在包含节点和边的结构中,我想添加边以访问所有节点。输入可以是一些 比如:

<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>

6.
7.
8.
正如您所见,在所有元素上都不会有一个完整的“连接”路径。路径应通过访问(按给定顺序)所有 @type='incoming',all@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>

2.
3.
5.
6.
4.
7.
8.
我不知道如何做到这一点,因为我必须“记住”我访问过的节点。使用XSLT-2.0是否可以实现类似的功能? 谢谢你的帮助

p、 s.项目不必按上述id排序。

通过使用递归模板调用并传递累积已访问节点集(或序列)的参数来“记住”已访问的节点。XSLT2.0使用序列和集合操作使这变得更容易,但XSLT1.0可以很好地做到这一点

参见示例实现。

通过使用递归模板调用并传递累积已访问节点集(或序列)的参数来“记住”已访问的节点。XSLT2.0使用序列和集合操作使这变得更容易,但XSLT1.0可以很好地做到这一点


请参阅示例实现。

这是一个很好的方法!谢谢:)这是一个很好的方法!谢谢:)