Я новичок в xslt и пробую разные варианты с нескольких дней. Am вид из идей, застрявших с ниже сценария (больше из-за моего отсутствия знаний о XSLT)Объединить 2 смежных элемента в 1 с помощью xslt
Входной XML является чем-то вроде:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<MAIN>
<ProcessResponse>
<ORDERNO>workorder123</ORDERNO>
<NAME>BD-OC 102</NAME>
<FID>124</FID>
<FNO>57</FNO>
<AID>126</AID>
<BID>125</BID>
</ProcessResponse>
<ProcessResponse>
<ORDERNO>workorder123</ORDERNO>
<NAME>BD-OC 102</NAME>
<FID>125</FID>
<FNO>58</FNO>
<AID>127</AID>
<BID>128</BID>
</ProcessResponse>
<ProcessResponse>
<ORDERNO>workorder124</ORDERNO>
<NAME>BD-OC 102</NAME>
<FID>130</FID>
<FNO>59</FNO>
<AID>132</AID>
<BID>131</BID>
</ProcessResponse>
<ProcessResponse>
<ORDERNO>workorder124</ORDERNO>
<NAME>BD-OC 102</NAME>
<FID>132</FID>
<FNO>60</FNO>
<AID>133</AID>
<BID>134</BID>
</ProcessResponse>
</MAIN>
И выход я ожидал что-то вроде (в основном Я хочу, чтобы каждые два последовательных элемента были объединены в 1, объединив часть, которая не является общей). В процедурных языках это должно быть просто, но я попробовал рекурсивно в xslt, но не получил желаемого результата.
Выход после трансформации:
<Response>
<Process>
<ORDERNO>workorder123</ORDERNO>
<NAME>BD-OC 102</NAME>
<F1>
<FID>124</FID>
<FNO>57</FNO>
<AID>126</AID>
<BID>125</BID>
</F1>
<F2>
<FID>125</FID>
<FNO>58</FNO>
<AID>127</AID>
<BID>128</BID>
</F2>
</Process>
<Process>
<ORDERNO>workorder124</ORDERNO>
<NAME>BD-OC 102</NAME>
<F1>
<FID>130</FID>
<FNO>59</FNO>
<AID>132</AID>
<BID>131</BID>
</F1>
<F2>
<FID>132</FID>
<FNO>60</FNO>
<AID>133</AID>
<BID>134</BID>
</F2>
</Process>
</Response>
Примечание: Фактические файлы гораздо более сложным, чем это, но основная идея та же, слияние каждые 2 последовательных блоков в один (общая часть).
Любая помощь/руководство/указатели оценили.
Какие Версия xslt? И каково правило слияния? Действительно последовательный или более, потому что ORDERNO - это то же самое? –
xslt version 1.0 Правило: Каждые 2 последовательных (да, потому что orderno одинаково), на данный момент последовательные элементы (только 2) будут иметь одинаковый порядок. (Хотя я думаю, что делать это на основе orderno было бы более общим), но это было бы больше, чем то, что я ищу (не то, что еще хуже). – user1933888