У меня есть исходный XML-файл в SVG, представленный так:
<svg>
<g id='a001' class='pools'>
<g id='b001' class='pool' name='Proc111'>
<g id='c001' class='lane' name='User111' PoolID='b001'>
<g id='d001' class='startevent' name='startevent111' LaneID='c001'></g>
</g>
<g id='c002' class='lane' name='User222' PoolID='b001'>
<g id='d002' class='gateway' name='gateway111' LaneID='c002'></g>
</g>
</g>
<g id='b002' class='pool' name='Proc222'>
<g id='c003' class='lane' name=' customer ' PoolID=' b002'>
<g id='d003' class='endevent' name='endevent111' LaneID='c003'> </g>
</g>
</g>
</g>
<g id='a002' class='messageflows'/>
</svg>
Я хочу преобразовать в целевую XML как следующий документ:
<process id='a001' name='proc111'>
<laneset>
<lane name='User111'/>
<lane name='User222'/>
</laneset>
<startevent id='d001' name='startevent111'/>
<gateway id='d002' name='gateway111'/>
</process>
<process id='a002' name='proc222'>
<laneset>
<lane name='customer'/>
</laneset>
<endevent id='d003' name='endevent111'/>
</process>
Я пытался с некоторым преобразованием, ноэто было неудачно ... Мое решение - создать основной шаблон;и внутри основного шаблона (шаблона процесса) я вызываю другие шаблоны, такие как starteventtemplate, endeventtemplate, шаблон шлюза и т. д. Однако в целевом документе я получаю все дочерние элементы, которые присутствуют одинаково для каждого родительского элемента ('process«).
Поскольку реальный файл больше, чем этот пример, с большим количеством элементов ... Итак, я выполнил основную проблему, чтобы подать заявку на остальные элементы.