Какой язык использовать для разбора xml для навигации

Я написал некоторый PHP-код для анализа XML-файла уже с SimpleXML, его довольно грязный, но может включать, если это поможет.

Это выглядит как xml-файл (файл навигации, который был сделан действительно странно и не может быть изменен)

<root name="menutest"> <menu> <nav name="home" path="index.php" /> <nav name="menulink1" path="link1.php"> <nav name="menulink1child1" path="menulink1childlink1.php"> <nav name="menulink1child1child1" path="menulink1childlink1childlink1.php" /> </nav> </nav> <nav name="menulink2" path="link2.php"> <nav name="menulink1child2" path="menulink2childlink2.php"> <nav name="menulink2child2child2" path="menulink2childlink2childlink2.php" /> </nav> </nav> <nav name="menulink3" path="link3.php"> <nav name="menulink3child3" path="menulink3childlink3.php"> <nav name="menulink3child3child3" path="menulink3childlink3childlink3.php" /> </nav> </nav> <nav name="menulink4" path="link4.php"> <nav name="menulink4child4" path="menulink4childlink4.php"> <nav name="menulink4child4child4" path="menulink4childlink4childlink4.php" /> </nav> </nav> </menu> </root> 

Я думал, используя простой SimpleXML для синтаксического анализа и XPATH для выбора узлов, а затем используя URL-адрес страницы с помощью запросов $ _SERVER, чтобы я мог определить, какой пункт меню должен быть открыт, чтобы использовать правильные стили CSS, например добавить стиль в nav name = "menulink1child1child1. что для страниц верхнего уровня и последующих дочерних элементов следует выбирать только элементы уровня 1 уровня 1, когда они попадают на дочерние страницы этого элемента

т.е.

  homepage: home | menulink1 | menulink2| menulink3 | menulink4 | menulink1: menulink1 -- childlink1 | menulink2 | menulink3 | menulink4 

Обратите внимание, что меню является вертикальным, а не горизонтальным, поэтому дочерние элементы должны отображаться в правильном порядке родительских элементов, а не просто автоматически ниже в новой строке веб-страницы 🙂

Мой вопрос: Каков наилучший способ проанализировать файл навигации xml, который требует условий для выбора дочерних элементов? Должен ли я смотреть на использование XSL для преобразования xml?

TIA Jared