合并在唯一 ID 中具有相同 ID 但包含所有子节点的节点的子节点

发布于 2024-12-04 19:46:44 字数 1962 浏览 0 评论 0原文

又是一个类似的问题,但现在结果包含多个孩子。

有什么帮助吗?

我有这个:

<root>
<rowdata>
    <ID>1</ID>
    <pxPages>
        <rowdata>
            <comment>comment A</comment>
            <timestamp>timestamp A</timestamp>
            <userID>user A</userID>
        </rowdata>
    </pxPages>
</rowdata>
<rowdata>
    <ID>2</ID>
    <pxPages>
        <rowdata>
            <comment>comment B</comment>
            <timestamp>timestamp B</timestamp>
            <userID>user B</userID>
        </rowdata>
    </pxPages>
</rowdata>
<rowdata>
    <ID>2</ID>
    <pxPages>
        <rowdata>
            <comment>comment C</comment>
            <timestamp>timestamp C</timestamp>
            <userID>user C</userID>
        </rowdata>
    </pxPages>
</rowdata>

并寻找:

<root>
<ResultOperationalStatusCategory>
    <identifier>1</identifier>
    <comments>
        <comment>comment A</comment>
        <timestamp>timestamp A</timestamp>
        <userID>user A</userID>
    </comments>
</ResultOperationalStatusCategory>
<ResultOperationalStatusCategory>
    <identifier>2</identifier>
    <comments>
        <comment>comment B</comment>
        <timestamp>timestamp B</timestamp>
        <userID>user B</userID>
    </comments>
    <comments>
        <comment>comment C</comment>
        <timestamp>timestamp C</timestamp>
        <userID>user C</userID>
    </comments>
</ResultOperationalStatusCategory>

因此,结果是每个唯一标识符,但包含所有注释。

谢谢!

Again a similar question but now the result is containing multiple childs.

any help?

I have this:

<root>
<rowdata>
    <ID>1</ID>
    <pxPages>
        <rowdata>
            <comment>comment A</comment>
            <timestamp>timestamp A</timestamp>
            <userID>user A</userID>
        </rowdata>
    </pxPages>
</rowdata>
<rowdata>
    <ID>2</ID>
    <pxPages>
        <rowdata>
            <comment>comment B</comment>
            <timestamp>timestamp B</timestamp>
            <userID>user B</userID>
        </rowdata>
    </pxPages>
</rowdata>
<rowdata>
    <ID>2</ID>
    <pxPages>
        <rowdata>
            <comment>comment C</comment>
            <timestamp>timestamp C</timestamp>
            <userID>user C</userID>
        </rowdata>
    </pxPages>
</rowdata>

and looking for:

<root>
<ResultOperationalStatusCategory>
    <identifier>1</identifier>
    <comments>
        <comment>comment A</comment>
        <timestamp>timestamp A</timestamp>
        <userID>user A</userID>
    </comments>
</ResultOperationalStatusCategory>
<ResultOperationalStatusCategory>
    <identifier>2</identifier>
    <comments>
        <comment>comment B</comment>
        <timestamp>timestamp B</timestamp>
        <userID>user B</userID>
    </comments>
    <comments>
        <comment>comment C</comment>
        <timestamp>timestamp C</timestamp>
        <userID>user C</userID>
    </comments>
</ResultOperationalStatusCategory>

so, result is per unique identifier but containing all comments.

thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜是你 2024-12-11 19:46:44
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>

    <xsl:key name="k" match="root/rowdata" use="ID"/>

    <xsl:template match="/root">
        <xsl:copy>
            <xsl:apply-templates select="rowdata[generate-id(.) = 
                           generate-id(key('k', ID))]"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="rowdata">
        <ResultOperationalStatusCategory>
            <identifier>
                <xsl:value-of select="ID"/>
            </identifier>

            <xsl:apply-templates select="key('k', ID)/pxPages/rowdata"/>

        </ResultOperationalStatusCategory>
    </xsl:template>

    <xsl:template match="pxPages/rowdata">
        <comments>
            <xsl:apply-templates select="*"/>
        </comments>
    </xsl:template>

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>

    <xsl:key name="k" match="root/rowdata" use="ID"/>

    <xsl:template match="/root">
        <xsl:copy>
            <xsl:apply-templates select="rowdata[generate-id(.) = 
                           generate-id(key('k', ID))]"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="rowdata">
        <ResultOperationalStatusCategory>
            <identifier>
                <xsl:value-of select="ID"/>
            </identifier>

            <xsl:apply-templates select="key('k', ID)/pxPages/rowdata"/>

        </ResultOperationalStatusCategory>
    </xsl:template>

    <xsl:template match="pxPages/rowdata">
        <comments>
            <xsl:apply-templates select="*"/>
        </comments>
    </xsl:template>

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文