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

Java 如何缩短在DSpace中显示的文件名,java,xslt-1.0,dspace,Java,Xslt 1.0,Dspace,我想缩短“简单项目”视图中显示的文件名 如果我有一个很长的文件名,它将显示在简单项目记录中: 如果查看完整项目记录,则此示例文件名会缩短: 但是,如果编辑此项目并单击项目位流选项卡,则文件名如下所示: <xsl:value-of select="util:shortenFileName(mets:FLocat[@LOCTYPE='URL']/@xlink:title, ' &#8230; ', 20)" /> 我的目标是将编辑比特流(第三张图片)中显示的内容应用于简单

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

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

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

但是,如果编辑此项目并单击项目位流选项卡,则文件名如下所示:

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


我的目标是将编辑比特流(第三张图片)中显示的内容应用于简单和完整的项目视图。我不知道这个转换是在哪里产生的。我查看了administration.xsl,没有找到任何关于文件名缩短的内容。请提供有关如何实现此转换或在何处查找此转换的建议。

在“项位流”选项卡中重写文件名是在Java代码中完成的,而不是在XSL中完成的。在这里:

您的项目页面截图看起来像是在使用XMLUI/Mirage 2,对吗?最好使用
org.dspace.app.xmlui.utils.XSLUtils
()中的
shortenString
方法。实际上,也许您没有使用幻影2,因为幻影2正是这样做的,请参见:


谢谢您的回答。这是我的代码和我如何使用它

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

    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)" />

文件名现在如下所示:

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

屏幕截图来自《幻影2》。完整项目记录视图中使用了
util:shortenString
if I'm not error(如果我没有错)(与第二个屏幕截图相同)?我想在字符串中间插入一个省略号,而不是在结尾II<代码>。获取文件名。pdf。感谢您给我指出
EditItemBitstreamsForm.java
,但我不知道如何在xslt中移植该代码。更不用说Andrea了,我想我已经解决了。再次感谢哦,对不起,是的,你写的是你想把它放在中间,我错过了。你的解决方案看起来很棒!