謝謝schweerelos!以你爲例,我們對我們的發現做了以下改變。XSL:
首先,我們需要一個額外的項目,以便執行將字符串縮短添加到樣式表:
<xsl:stylesheet
xmlns:util="org.dspace.app.xmlui.utils.XSLUtils"
...
exclude-result-prefixes="xalan encoder i18n dri util ...">
然後我們修改了:fulltext
分支是一個否則,顯示的第一220個字符摘要(只要它存在)。
<xsl:choose>
<xsl:when test="dri:list[@n=(concat($handle, ':dc.description.abstract'))]/dri:item/dri:hi">
<div class="abstract">
<xsl:for-each select="dri:list[@n=(concat($handle, ':dc.description.abstract'))]/dri:item">
<xsl:apply-templates select="."/>
<xsl:text>...</xsl:text>
<br/>
</xsl:for-each>
</div>
</xsl:when>
<xsl:otherwise> <!-- NEW APPROACH STARTS ON THIS LINE -->
<div class="abstract">
<xsl:value-of select="util:shortenString(dri:list[@n=(concat($handle, ':dc.description.abstract'))]/dri:item, 220, 10)"/>
</div>
</xsl:otherwise>
</xsl:choose>
我們發現這是一個可接受的權衡,並提供了一致的外觀。您可以在記錄中提供的dc.description.abstract或dc.description.abstract的開頭處看到Hit Highlighting(查找搜索項已找到(KWIC))的位置。
而且在抽象的文本本身目前禁運(或無限期地限制),那麼那些有可能會顯示在舊呈現受限制的內容只是顯示任何搜索詞「這個項目的抽象的限制......」因爲dc.description.abstract
場填充該文本。
上述方法(<xsl:otherwise>
部分)取代了以下內容。
拒絕(如交付的)做法:
<xsl:when test="dri:list[@n=(concat($handle, ':fulltext'))]">
<div class="abstract">
<xsl:for-each select="dri:list[@n=(concat($handle, ':fulltext'))]/dri:item">
<xsl:apply-templates select="."/>
<xsl:text>...</xsl:text>
<br/>
</xsl:for-each>
</div>
</xsl:when>
該文件是在一個意想不到的位置,如果我的理解更多的發展過程是如何工作的,我可以大概我們主題刪除此文件夾,但作爲它的立場,它在dri2xhtml-alt主題中進行了編輯。我沒有想到會在那裏找到影響這種行爲的文件,但似乎很清楚它可以在那裏改變它。你應該知道
\DSpaceRepo\dspace-xmlui\src\main\webapp\themes\dri2xhtml-alt\aspect\artifactbrowser\discovery.xsl
最後一兩件事 - 如果你正在編輯這個文件,並希望改變對你清楚地看到,你需要保持清除瀏覽器歷史記錄/緩存或執行新的搜索。由於這個原因,編輯過程有點艱鉅(不能反映最新的變化),直到我找到一個好的工作流程。
當我試圖實現util:shortenString函數時,出現以下錯誤:'org.apache.xpath.domapi.XPathStylesheetDOM3Exception:前綴必須解析爲命名空間:util' – veeTrain
我通過將其添加到xsl :文件開始處的樣式表:'xmlns:util =「org.dspace.app.xmlui.utils.XSLUtils」',並且可能還會排除util作爲結果前綴。 – veeTrain