Рассмотрим следующий 'пример. xml'
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<level>
<name>testA</name>
<level>
<name>testB</name>
</level>
<level>
<name>testC</name>
<level>
<name>testD</name>
<level>
<name>testE</name>
</level>
</level>
</level>
</level>
</root>
Используя xmlstarlet, я могу сделать:
xml sel -t -m //level -v name -o " " -v "count(ancestor::*)-1" -o "." -v "count(preceding-sibling::*)" -n sample.xml
Это дает:
testA 0.0
testB 1.1
testC 1.2
testD 2.1
testE 3.1
Что Должен ли я сделать, чтобы получить:
testA 0.0
testB 1.1
testC 1.2
testD 1.2.1
testE 1.2.1.1
В этом примере у меня есть только 4 уровня, но это может быть больше 4.
Я думаю о какой-то рекурсии, есть ли ссылки, которые могут объяснить, как это сделать?