【问题标题】:Normalize slashes in URL规范化 URL 中的斜杠
【发布时间】:2026-02-08 03:55:01
【问题描述】:

有没有一种简单的方法可以使用 XSLT 规范化 URL 的斜线?

在我的示例中,我正在使用 XSLT 转换 RSS 提要,并且我想为标签构建 URL。我可以使用以下行来做到这一点:

<skos:Concept about="{/rss/channel/link}/tag/{@nicename}">

<skos:Concept about="{/rss/channel/link}tag/{@nicename}">

有时link 有一个斜杠,有时没有。是否有一个简单的功能,可以确保总是有一个斜线?例如:

<skos:Concept about="{normalize-slashs(/rss/channel/link/)}tag/{@nicename}">

【问题讨论】:

    标签: xml url xslt rss xslt-1.0


    【解决方案1】:

    假设您的链接不包含空格,请尝试 =

    translate(normalize-space(translate(/rss/channel/link, '/', ' ')), ' ', '/')
    

    编辑:

    要从 $string 中删除右斜杠(如果存在):

    substring($string, 1, string-length($string) - (substring($string, string-length($string))='/'))
    

    在 XSLT 2.0 中,这可以通过使用 ends-with() 函数来缩短。

    【讨论】:

    • @white_gecko 是的,这就是“标准化”的作用。试试我添加到答案中的替代方法。