Я пытаюсь напечатать весь путь от корня до листа, используя рекурсию, но я не знаю Я не знаю, как к этому подойти, я полностью застрял
<node id = "N1">
<node id = "N1">
<node id = "N1"></node>
<node id = "N2"></node>
<node id = "N3"></node>
</node>
</node>
желаемый результат:
N1 N1 N1
N1 N1 N2
N1 N1 N3
Я думал, что рекурсия - единственный способ сделать это, что делает node[not(*)]! иметь в виду ?
//node[not(*)]
выбирает листовые node
элементы. !
— это оператор карты XPath 3, используйте /
, если вы ограничены двумя.
Спасибо, я пытался поэкспериментировать с вашим кодом, но я не могу добавить разрыв строки для достижения желаемого результата, разве это невозможно?
Ничего, я сделал это спасибо за помощь
Просто
<xsl:value-of select = "//node[not(*)]/string-join(ancestor-or-self::node/@id, ' ')" separator = " "/>
должен делать без необходимости рекурсии.
Почему рекурсия?
//node[not(*)]!string-join(ancestor-or-self::node/@id, ' ')