Я настроил индекс с местами.Результат должен быть от большего к меньшему, то есть
Нью-Йорк, Манхэттен, Уолл-стрит
Проблема в том, что иногда улицы не принадлежатодин район, но два, а иногда и вовсе нет района, но улицы перечислены непосредственно под городом.
Поэтому всякий раз, когда я получаю идентификатор и использую его в коде, подобном следующему:
<?xml version="1.0" encoding="UTF-8"?>
<listplaces>
<place>
<placeName type="city">City A</placeName>
<idno>CA</idno>
</place>
<place>
<placeName type="district">District B</placeName>
<idno>DB</idno>
<belongsTo active="CA" passive="DB"/>
</place>
<place>
<placeName type="district">District C</placeName>
<idno>DC</idno>
<belongsTo active="CA" passive="DC"/>
</place>
<place>
<placeName type="street">Street D</placeName>
<idno>SD</idno>
<belongsTo active="DB" passive="SD"/>
<belongsTo active="DC" passive="SD"/>
</place>
<place>
<placeName type="street">Street E</placeName>
<idno>SE</idno>
<belongsTo active="CA" passive="SE"/>
</place>
</listplaces>
Это должно вывести в соответствии с idno
idno CA: City A
idno DB: City A, District B
idno DC: City A, District C
idno SD: City A, District B, Street D
idno SD: City A, District C, Street D
idno SE: City A, Street E
Проблема в том, что когда я на самом низком уровне, создать выход в правильном порядке - следовать всем @active отношениям наверх,Я нашел решение, в котором я записываю активное placeName всегда слева от строки.Но я понятия не имею, как заставить XSLT иметь дело со всеми возможными вариантами и создать соответственно столько строк, сколько необходимо.
(я использую XSLT 3.0)