У меня есть эти данные XML:
<root>
(...)
<items>
<item>
(...)
<custom1>blabla</custom1>
<custom2>blibli</custom2>
<custom3>blublu</custom3>
<custom4/>
<custom5/>
<custom6/>
<custom7/>
<custom8/>
<custom9/>
<custom10/>
(...)
</item>
<item>
(...)
<custom1/>
<custom2/>
<custom3/>
<custom4>bloblo</custom1>
<custom5>bleble</custom2>
<custom6/>
<custom7/>
<custom8/>
<custom9/>
<custom10/>
(...)
</item>
</items>
(...)
</root>
И мне нужно (с XSLT 1.0) преобразовать их в:
<root>
(...)
<items>
<item>
(...)
<refVariables>
<refVariable uuid="var1" value="blabla"/>
<refVariable uuid="var2" value="blibli"/>
<refVariable uuid="var3" value="blublu"/>
</refVariables>
(...)
</item>
<item>
(...)
<refVariables>
<refVariable uuid="var4" value="bloblo"/>
<refVariable uuid="var5" value="bleble"/>
</refVariables>
(...)
</item>
</items>
(...)
<variables>
<variable uuid="var1">
<name>var1</name>
<comment>Migrated</comment>
</variable>
<variable uuid="var2">
<name>var2</name>
<comment>Migrated</comment>
</variable>
<variable uuid="var3">
<name>var3</name>
<comment>Migrated</comment>
</variable>
<variable uuid="var4">
<name>var4</name>
<comment>Migrated</comment>
</variable>
<variable uuid="var5">
<name>var5</name>
<comment>Migrated</comment>
</variable>
</variables>
</root>
Чтобы возобновить, мне нужно:
- преобразование всех узлов в более "общую" форму:
- создание всех узлов только для непустых узлов из источника
Первая часть была непростой, но в итоге я нашел решение, которое меня порадовало.
https://pastebin.com/EDkd2ZQu
Но длявторая часть, я понятия не имею, как это сделать, и я не знаю, возможно ли это вообще ...