如何缩短DSpace中显示的文件名

How to shorten filename displayed in DSpace

我想缩短简单项目视图中显示的文件名。

如果我有一个很长的文件名,这会显示在简单的项目记录中:

如果您查看完整的项目记录,此示例文件名会缩短:

但是如果您编辑此项目并单击 Item Bitstreams 选项卡,文件名将显示如下:

我的目标是将编辑比特流(第 3 张图片)中显示的内容应用到简单且完整的项目视图中。我不知道这种转变是在哪里产生的。我查看了 administrative.xsl,但找不到关于缩短文件名的任何信息。请就如何实现此目标或在哪里寻找此转换提出建议。

"Item Bitstreams" 选项卡中文件名的重写是在 Java 代码中完成的,而不是在 XSL 中。在这里:EditItemBitstreamsForm.java.

您的项目页面屏幕截图看起来像是在 XMLUI / Mirage 2 中工作,对吗?最好的办法是在 org.dspace.app.xmlui.utils.XSLUtils 中使用 shortenString 方法(code). Actually maybe you aren't using Mirage 2 because Mirage 2 does just that, see item-view.xsl:

<xsl:value-of select="util:shortenString(mets:FLocat[@LOCTYPE='URL']/@xlink:title, 30, 5)"/>

感谢 Andrea 的回答。这是我的代码以及我是如何使用它的。

我在 org.dspace.app.xmlui.utils.XSLUtils

中创建了一个新方法 shortenFileName
    public static String shortenFileName(String string, String middle, int targetLength) {
        targetLength = Math.abs(targetLength);

        if (string != null && string.length() > targetLength) {
            // If the file name is too long then shorten it so that it will display nicely.
            return StringUtils.abbreviateMiddle(string, middle, targetLength);
        }
        else
            return string;
    }

然后像这样在 item-view.xsl 中使用它:

<xsl:value-of select="util:shortenFileName(mets:FLocat[@LOCTYPE='URL']/@xlink:title, ' &#8230; ', 20)" />

文件名现在看起来像这样: