gpt4 book ai didi

xslt - 使用 XSLT 进行数据透视

转载 作者:行者123 更新时间:2023-12-02 11:41:34 25 4
gpt4 key购买 nike

我有一个像这样的 xml 文件:

<root>
<item>
<name>one</name>
<status>good</status>
</item>
<item>
<name>two</name>
<status>good</status>
</item>
<item>
<name>three</name>
<status>bad</status>
</item>
<item>
<name>four</name>
<status>ugly</status>
</item>
<item>
<name>five</name>
<status>bad</status>
</item>
</root>

我想使用 XSLT 对其进行转换以获得如下内容:

<root>
<items><status>good</status>
<name>one</name>
<name>two</name>
</items>
<items><status>bad</status>
<name>three</name>
<name>five</name>
</items>
<items><status>ugly</status>
<name>four</name>
</items>
</root>

换句话说,我得到了一个项目列表,每个项目都有一个状态,我想将其转换为一个状态列表,每个状态都有一个项目列表。

我最初的想法是依次匹配每个状态类型的应用模板,但这意味着我必须知道完整的状态列表。有更好的方法吗?

感谢您的帮助。

最佳答案

慕尼黑来救援!

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" indent="yes" encoding="UTF-8"/>

<xsl:key name="muench" match="/root/item/status" use="."/>

<xsl:template match="/">
<root>
<xsl:for-each select="/root/item/status[generate-id() = generate-id(key('muench',.)[1])]">
<xsl:call-template name="pivot">
<xsl:with-param name="status" select="."/>
</xsl:call-template>
</xsl:for-each>
</root>
</xsl:template>

<xsl:template name="pivot">
<xsl:param name="status"/>
<items>
<status><xsl:value-of select="$status"/></status>
<xsl:for-each select="/root/item[status=$status]">
<name><xsl:value-of select="name"/></name>
</xsl:for-each>
</items>
</xsl:template>

</xsl:stylesheet>

关于xslt - 使用 XSLT 进行数据透视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/424348/

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