gpt4 book ai didi

xml - XSLT 2.0 : Substring-after on a for-each loop to get distinct-values

转载 作者:数据小太阳 更新时间:2023-10-29 02:56:59 25 4
gpt4 key购买 nike

我有以下输入 XML:

<img src="blah.jpg"/>
<img src="blahh.jpg"/>
<img src="blah.gif"/>

我需要一个不同的文件类型输出字符串,格式为:

jpg|gif

我现有的样式表得到了一些帮助:

<xsl:for-each select="distinct-values(descendant::img/@src)">
<xsl:choose>
<xsl:when test="position()!=last()">
<xsl:value-of select="concat(substring-after(.,'.'),'|')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring-after(.,'.')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>

但是,我得到了一个重复的文件类型,因为我不能将 substring-after 放在 for-each 循环中(它会抛出一个错误,因为你不能同时对多个字符串执行 substring-after)。这意味着我只能获得整个@src 属性的不同值(不是句点后的字符串)。所以我的输出目前看起来像这样:

jpg|jpg|gif

如果有一个简单的 XSLT 2.0 解决方案使我能够做到这一点,我将非常感激。

非常感谢您提前抽出时间 - 非常感谢。

最佳答案

在 XSLT 2.0 中,您应该能够做到这一点......

<xsl:for-each select="distinct-values(descendant::img/(substring-after(@src, '.')))">

那应该只返回“jpg”和“gif”。

更好的是,完全取消 xsl:for-each,只做这个

<xsl:value-of select="distinct-values(descendant::img/(substring-after(@src, '.')))" 
separator="|" />

当然,这是假设您所有的文件名都只有一个 .。像“my.file.gif”这样的文件名会导致问题。

关于xml - XSLT 2.0 : Substring-after on a for-each loop to get distinct-values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24435755/

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