如何使用XSLT重组准备好进行主从实现的XML文件?

问题描述

我是xslt转换的新手。

我有一个数据库导出的xml文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<daTaroot xmlns:od="urn:schemas-microsoft-com:officedata" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xsi:noNamespaceSchemaLocation="tbl_osinfo.xsd" 
generated="2020-08-26T17:39:12">
    <tbl_osinfo>
        <ID>1</ID>
        <os_name>Amazon Linux</os_name>
        <os_version>2015.09 or later</os_version>
        <os_architecture>64-bit</os_architecture>
    </tbl_osinfo>
    <tbl_osinfo>
        <ID>10</ID>
        <os_name>Microsoft Windows</os_name>
        <os_version>10 Enterprise Edition</os_version>
        <os_architecture>64-bit</os_architecture>
    </tbl_osinfo>
    <tbl_osinfo>
        <ID>11</ID>
        <os_name>Microsoft Windows</os_name>
        <os_version>10 Professional Edition</os_version>
        <os_architecture>64-bit</os_architecture>
    </tbl_osinfo>
    <tbl_osinfo>
        <ID>12</ID>
        <os_name>Microsoft Windows</os_name>
        <os_version>7 Enterprise Edition</os_version>
        <os_architecture>64-bit</os_architecture>
    </tbl_osinfo>
    <tbl_osinfo>
        <ID>13</ID>
        <os_name>Microsoft Windows</os_name>
        <os_version>7 Enterprise Edition</os_version>
        <os_architecture>32-bit</os_architecture>
    </tbl_osinfo>
</daTaroot>

由于我要为WPF应用程序制作一个由XML文件支持的Master Detail,因此我希望格式如下:

<tbl_osinfo>
    <osinfo name="Amazon Linux">
        <osversion name="2015.09 or later">
            <os_architecture>64-bit</os_architecture>
        </osversion>
    </osinfo>
    <osinfo name="Microsoft Windows">
        <osversion name="7 Enterprise Edition">
            <os_architecture>64-bit</os_architecture>
            <os_architecture>32-bit</os_architecture>
        </osversion>
        <osversion name="10 Enterprise Edition">
            <os_architecture>64-bit</os_architecture>
        </osversion>
        <osversion name="10 Professional Edition">
            <os_architecture>64-bit</os_architecture>
        </osversion>
    </osinfo>
</tbl_osinfo>

转型要点:

  1. 我希望具有相同操作系统名称的每个数据行都成为一个节点。
  2. 对于每个不同版本名称的迭代,我希望它成为该单个节点下的子节点。
  3. 递归地将具有体系结构节点的版本作为子节点。

我遇到的问题: 我查看了xslt转换的几个示例和教程,它们都要求转换后的xml文件与原始文件相似或完全相同,xslt是否有可能通过共享相同值的节点枚举并将它们组合为一个单个节点?

预先感谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)