You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用XSL 1.0生成子元素的去重属性列表

用XSL 1.0生成去重排序的水果缩写列表

需要使用XSL 1.0构建转换规则,从给定XML中生成去重的水果列表。需合并两级entities节点(/entities和/entities/entity/entities)下type为fruit的entity元素,提取其abbreviatedText属性,去除重复值并按字母顺序排序,输出为文本格式。受限于必须使用XSL 1.0,优先采用该版本方案。

初始XML示例

<item type="food">
    <entities>
        <entity type="fruit" abbreviatedText="BAN">banana</entity>
        <entity type="fruit" abbreviatedText="APP">apple</entity>
        <entity type="fruit" abbreviatedText="ORA">orange</entity>
        <entity type="fruit" abbreviatedText="LEM">lemon</entity>
        <entity type="fruit" abbreviatedText="GRA">grape</entity>
        <entity type="citrus" abbreviatedText="CIT">citrus             
            <entities>
                <entity type="fruit" abbreviatedText="ORA">orange</entity>
                <entity type="fruit" abbreviatedText="LEM">lemon</entity>
                <entity type="fruit" abbreviatedText="LIM">lime</entity>
                <entity type="fruit" abbreviatedText="MAN">mandarin</entity>
            </entities>
        </entity>
    </entities>
</item>

期望输出

去重且按字母排序的abbreviatedText属性列表:APP, BAN, GRA, LEM, LIM, MAN, ORA

更新后的详细XML示例

<?xml version="1.0" encoding="UTF-8"?>
<item type="food">
    <entities>
        <entity type="fruit" abbreviatedText="BAN">banana</entity>
        <entity type="fruit" abbreviatedText="APP">apple</entity>
        <entity type="fruit" abbreviatedText="ORA">orange</entity>
        <entity type="fruit" abbreviatedText="LEM">lemon</entity>
        <entity type="fruit" abbreviatedText="GRA">grape</entity>
        <entity type="fruit" abbreviatedText="STR">strawberry</entity>
        <entity type="fruit" abbreviatedText="WTR">water melon</entity>
        <entity type="other" abbreviatedText="CIT">citrus             
            <entities>
                <entity type="fruit" abbreviatedText="ORA">orange</entity>
                <entity type="fruit" abbreviatedText="MAN">mandarin</entity>
                <entity type="fruit" abbreviatedText="LEM">lemon</entity>              
            </entities>
        </entity>
        <entity type="other" abbreviatedText="BRY">berry             
            <entities>
                <entity type="fruit" abbreviatedText="GRA">grape</entity>
                <entity type="fruit" abbreviatedText="STR">strawberry</entity>
            </entities>
        </entity>
        <entity type="other" abbreviatedText="MEL">melon             
            <entities>
                <entity type="fruit" abbreviatedText="WTR">water melon</entity>
                <entity type="fruit" abbreviatedText="RKM">rock melon</entity>
            </entities>
        </entity>
    </entities>
</item>

可用的XSL 1.0代码

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
    <xsl:key name="index_key" match="entity" use="@abbreviatedText" />
    <xsl:template match="item">
        <xsl:for-each select="entities/entity[@type='fruit'][count(. | key('index_key', @abbreviatedText)[1]) = 1] | entities/entity[@type='other' and (@abbreviatedText='CIT' or @abbreviatedText='BRY')]/entities/entity[count(. | key('index_key', @abbreviatedText)[1]) = 1]">
            <xsl:sort select="@abbreviatedText" />
            <xsl:value-of select="@abbreviatedText" />
            <xsl:text>&#10;</xsl:text>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

输出结果

APP
BAN
GRA
LEM
MAN
ORA
STR
WTR

该XSL代码可灵活指定需纳入的实体。


内容的提问来源于stack exchange,提问作者tphallett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 13:02:01