gpt4 book ai didi

XSLT:提取唯一属性值

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

请帮忙,我是 XSLT 新手,我正在尝试将一种 XML 格式转换为另一种格式。

我需要提取唯一的属性值并将这些值转换为新的格式。下面的示例 XML 显示了原始格式和新/目标格式。

我花了很长时间尝试这样做,但没有任何乐趣。有人可以帮忙或给我一些指示吗?

原始格式:

<base>
<level>
<level2 Name ="AA" value="1"/>
</level>
<level>
<level2 Name ="BB" value="2"/>
</level>
<level>
<level2 Name ="BB" value="3"/>
</level>
<level>
<level2 Name ="CC" value="4"/>
</level>
<level>
<level2 Name ="AA" value="5"/>
</level>
</base>

新格式:

<base>
<levelNames>
<level level2Name ="AA"/>
<level level2Name ="BB"/>
<level level2Name ="CC"/>
</levelNames>
</base>

非常感谢。

最佳答案

XSLT 解决方案:

<?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" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:key name="LevelDistint" match="level2" use="@Name"/>
<xsl:template match="base">
<base>
<levelNames>
<xsl:for-each select="level/level2[generate-id() = generate-id(key('LevelDistint', @Name)[1])]">
<level>
<xsl:attribute name="level2Name"><xsl:value-of select="normalize-space(@Name)"/></xsl:attribute>
</level>
</xsl:for-each>
</levelNames>
</base>
</xsl:template>
</xsl:stylesheet>

XSLT 操作:

<?xml version="1.0" encoding="UTF-8"?>
<base>
<levelNames>
<level level2Name="AA"/>
<level level2Name="BB"/>
<level level2Name="CC"/>
</levelNames>
</base>

关于XSLT:提取唯一属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1073685/

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