微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 XSLT 中标记使用 group-by 后删除相同的数字

如何解决如何在 XSLT 中标记使用 group-by 后删除相同的数字

我试图在标记值和另一个条目值后删除重复的数字,例如<p>1(a),(b),(c)</p><p>1(a)</p>。如何使用 group-by 删除重复条目。
输入 XML

<root>
    <p>1(a),(c)</p>
    <p>1(a)</p>
    <p>2(a)</p>
    <p>3(a)</p>
    <p>1(c)</p>
</root>

预期产出

<root>
   <p>1(a)</p>
   <p>1(b)</p>
   <p>1(c)</p>
   <p>2(a)</p>
   <p>3(a)</p>
</root>

XSLT 代码

<xsl:template match="root">
    <root>
        <xsl:for-each-group select="p" group-by=".">
            <xsl:sort select="current-grouping-key()" data-type="number" order="ascending"/>
            <xsl:choose>
                <xsl:when test="contains(current-grouping-key(),',')">
                    <xsl:variable name="tokens" select="tokenize(current-grouping-key(),and |,')"/>
                    <xsl:for-each select="$tokens">
                        <p>
                            <xsl:value-of
                                select="if (starts-with(.,'('))
                                then replace(head($tokens),'(.*)\(.*?\)$','$1') || .
                                else ."/>
                        </p>
                        
                    </xsl:for-each>
                </xsl:when>
                <xsl:otherwise>
                    <p><xsl:value-of select="current-grouping-key()"/></p>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:for-each-group>
    </root>
</xsl:template>

解决方法

可能就够了

List.init N (fun x->0)

https://xsltfiddle.liberty-development.net/6q1SDkG

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。