Я пытаюсь создать XML на основе двух других XML. Я опрашиваю БД, которая возвращает сведения о людях (в запросе может быть n количество людей). Окончательный XML-файл должен содержать точно такое же количество тегов данных, как и различные теги имен в XML-файле, поступающем из БД. Для примера:
1-й XML-получение этого из БД
<parent>
<child>
<name>John</name>
<city>Boston</city>
</child>
<child>
<name>John</name>
<city>Seattle</city>
</child>
<child>
<name>Allison</name>
<city>Houston</city>
</child>
</parent>
2-й XML-получение этого из другого источника
<details>
<parent>
<detail>
<city>Boston</city>
<code>abc</code>
</detail>
<detail>
<city>Houston</city>
<code>xyz</code>
</detail>
</parent>
<parent>
<detail>
<city>Boston</city>
<code>abc</code>
</detail>
<detail>
<city>Seattle</city>
<code>mno</code>
</detail>
</parent>
<parent>
<detail>
<city>Houston</city>
<code>xyz</code>
</detail>
<detail>
<city>Seattle</city>
<code>mno</code>
</detail>
</parent>
</details>
Сначала мне нужно создать 2 тега данных, так как есть 2 разных имени — Джон и Эллисон (эта часть уже сделана и работает нормально). Затем мне нужно проверить Джона, какие бы уникальные теги городов ни присутствовали в возвращаемых строках БД. Давайте рассмотрим 1-й XML, у нас есть Джон, связанный с Бостоном и Сиэтлом. Итак, один за другим, я проверю эти города во втором XML-коде и для каждого тега parent, который я что-то сопоставлю, я создам новый тег details и вставлю весь соответствующий контент. .
1) Если нет совпадающих записей, тег сведений не должен создаваться, так как нет совпадающих записей.
2) Тег city будет находиться под тегом parent. Значения тега city будут УНИКАЛЬНЫ внутри тега parent. Я должен сопоставлять city один за другим во втором XML и брать значения из всех соответствующих тегов city, всех родителей из второго XML и заполнять таким образом, где что угодно сопоставленный в теге parent, помещается в соответствующий тег detail в выходном XML. PFB примеры XML, которые объяснят лучше -
Окончательный ожидаемый XML-
<FinalData>
<Data>
<name>John</name>
<details>
<detail>
<city value="Boston">abc</city>
</detail>
<detail>
<city value="Boston">abc</city>
<city value="Seattle">mno</city>
</detail>
<detail>
<city value="Seattle">mno</city>
</detail>
</details>
</Data>
<Data>
<name>Allison</name>
<details>
<detail>
<city value="Houston">xyz</city>
</detail>
<detail>
<city value="Houston">xyz</city>
</detail>
</details>
</Data>
</FinalData>
В настоящее время мой XSLT приводит к чему-то вроде ниже -
<FinalData>
<Data>
<name>John</name>
<details>
<detail>
<city value="Boston">abc</city>
<city value="Boston">abc</city>
<city value="Seattle">mno</city>
<city value="Seattle">mno</city>
</detail>
</details>
</Data>
<Data>
<name>Allison</name>
<details>
<detail>
<city value="Houston">xyz</city>
<city value="Houston">xyz</city>
</detail>
</details>
</Data>
</FinalData>
Надеюсь, это понятно, так как я не умею давать объяснения.