Я пытаюсь изучить xslt как хобби, и один из вариантов использования, который мне интересен, заключается в расширении определений определенных компонентов до их полных форм. Пример должен прояснить, что я имею в виду. например если мой ввод XML выглядит следующим образом:Развернуть компактное представление xml для более подробного представления с помощью xslt
<universe>
<galaxies>
<galaxy name="milky way">
<system name="solar system"/>
</galaxy>
<galaxy name="lactose free">
<system name="windmill system"/>
</galaxy>
<galaxy name="parallelish solar system">
<system name="the earth system"/>
</galaxy>
</galaxies>
<systems>
<system name="solar system">
<planet name="pluto"/>
<system name="the earth system"/>
<planet name="mercury"/>
</system>
<system name="windmill system">
<planet name="windy"/>
</system>
<system name="the earth system">
<planet name="earth"/>
<satellite name="moon"/>
</system>
</systems>
</universe>
Моего выход XML будет иметь эти системы определения расширенное в определениях галактик рекурсивно (например, система заземления в Солнечной системе), и в каждом отдельном месте происходит определение (например, земли система происходит в двух разных системах). В разделе системы будут удалены:
<universe>
<galaxies>
<galaxy name="milky way">
<system name="solar system">
<planet name="pluto"/>
<system name="the earth system">
<planet name="earth"/>
<satellite name="moon"/>
</system>
<planet name="mercury"/>
</system>
</galaxy>
<galaxy name="lactose free">
<system name="windmill system">
<planet name="windy"/>
</system>
</galaxy>
<galaxy name="parallelish solar system">
<system name="the earth system">
<planet name="earth"/>
<satellite name="moon"/>
</system>
</galaxy>
</galaxies>
</universe>
Я довольно много нового XSLT, и в настоящее время, линия мысли я следовал в том, чтобы каким-то образом определить эти составные блоки, как переменные и вставить их по мере необходимости на втором (втором) проходе. Однако, поскольку я искал googled и немного читал, пытаясь найти примеры, я не был очень успешным. Мне интересно, возможно ли это (я бы так ожидал), и какие понятия мне нужно использовать для достижения этого. Примеры фрагментов будут очень полезными.
Спасибо!
Спасибо за помощь Майкл! Сейчас я начинаю читать о ключах, спасибо, что указал на них. –
Я также обнаружил, что для моего конкретного случая кажется более естественным отличать системы/систему (определение) от ссылок на систему неявно, используя исходный xml, который я опубликовал, и следующий более подходящий шаблон: xsl: template> Я делаю есть также чтение и исключение матчей (например, нет (система/системы)). –