【发布时间】:2020-04-29 12:06:02
【问题描述】:
我正在尝试生成基于其他 2 个 XML 的 XML。我正在轮询一个返回人员详细信息的数据库(查询中可以返回 n 个人)。 最终的 XML 应该具有与来自 DB 的 XML 中的 不同名称标签一样的确切数量的 数据标签。例如:
第一个 XML - 从 DB 获取它
<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>
第二个 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 个不同的名称 - John 和 Allison(这部分已经完成并且运行良好)。 然后我需要检查 John,无论返回的 DB 行中是否存在唯一的城市标签。让我们考虑第一个 XML,我们有与波士顿和西雅图有关的 John。因此,我将一一检查第二个 XML 中的这些城市,对于我匹配的每个 parent 标签,我将创建一个新标签 details 并粘贴所有相关内容.
1) 如果没有匹配的条目,则不应创建详细信息标签,因为没有匹配的条目。
2) city 标签将位于 parent 标签之下。 city 标签的值在 parent 标签内是唯一的。我必须在第二个 XML 中一一匹配 city 并从所有匹配的 city 标记中获取值,从第二个 XML 的所有父项中获取值,并以任何方式填充在 parent 标记中匹配的内容会出现在输出 XML 中的相应 detail 标记中。 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>
希望这很清楚,因为我不擅长解释。
【问题讨论】:
标签: xml xslt xslt-2.0 xslt-grouping xslkey