gpt4 book ai didi

xml - 使用 XSLT 对简单 XML 应用 Muenchian 分组

转载 作者:数据小太阳 更新时间:2023-10-29 01:46:22 24 4
gpt4 key购买 nike

如何Muenchian grouping工作细节?

我有一个从数据库生成的简单 XML 文档:

<CLIENTS>
<CLIENT>
<NAME>John</NAME>
<ACCOUNT_NUMBER>1424763562761</ACCOUNT_NUMBER>
<LAST_USED>2012-10-03</LAST_USED>
<AMOUNT>5000</AMOUNT>

</CLIENT>
<CLIENT>
<NAME>John</NAME>
<ACCOUNT_NUMBER>543667543732</ACCOUNT_NUMBER>
<LAST_USED>2012-10-02</LAST_USED>
<AMOUNT>10000</AMOUNT>
</CLIENT>
...

我想按名称节点分组。我怎样才能得到以下所需的输出?

<ClIENTS>
<CLIENT>
<NAME>John</NAME>
<ACCOUNT>
<ACCOUNT_NUMBER>1424763562761</ACCOUNT_NUMBER>
<LAST_USED>2012-10-03</LAST_USED>
<AMOUNT>5000</AMOUNT>
</ACCOUNT>
<ACCOUNT>
<ACCOUNT_NUMBER>543667543732</ACCOUNT_NUMBER>
<LAST_USED>2012-10-03</LAST_USED>
<AMOUNT>10000</AMOUNT>
</ACCOUNT>
....
</CLIENTS>

最佳答案

阅读www.jenitennison.com/xslt/grouping/muenchian.xml , 帮助代码定义一个键

<xsl:key name="client-by-name" match="CLIENT" use="NAME"/>

然后使用模板作为

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


<xsl:template match="CLIENTS">
<xsl:copy>
<xsl:apply-templates select="CLIENT[generate-id() = generate-id(key('client-by-name', NAME)[1])]" mode="group"/>
<xsl:copy>
</xsl:template>

<xsl:template match="CLIENT" mode="group">
<xsl:copy>
<xsl:copy-of select="NAME"/>
<xsl:apply-templates select="key('client-by-name', NAME)"/>
</xsl:copy>
</xsl:template>

<xsl:template match="CLIENT">
<ACCOUNT>
<xsl:apply-templates select="node()[not(self::NAME)]"/>
</ACCOUNT>
</xsl:template>

[编辑]如果您想使用 XSLT 2.0,那么您当然不需要 Muenchian 分组,而是使用

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

<xsl:template match="CLIENTS">
<xsl:copy>
<xsl:for-each-group select="CLIENT" group-by="NAME">
<CLIENT>
<xsl:apply-templates select="NAME, current-group()"/>
</CLIENT>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>

<xsl:template match="CLIENT">
<ACCOUNT>
<xsl:apply-templates select="node() except NAME"/>
</ACCOUNT>
</xsl:template>

关于xml - 使用 XSLT 对简单 XML 应用 Muenchian 分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12783340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com