2016-01-25 11 views
1

EPrints является Perl на основе хранилища, см EPrints in WPКак рассчитать число авторов в EPrints (хранилище, такое как DSpace)?

Мой библиотекарь попросил меня настройки EPrins следующим образом (только для типа «монографии» документов):

  1. Если есть 3 или менее авторы затем печатают «авторы» до названия монографии;
  2. Если есть более 3 авторов, напечатайте '$ title/$ authors'.

К примеру, 7 авторы в первой публикации и 2 авторы во второй публикации:

  1. Анализ котировке корпус русского Викисловаря/Смирнов А. Т., Левашова, Карпов А ., Кипяткова И., Ронжин А., Крижановский А., Крижановский Н. Исследования в области вычислительной техники. 2012
  2. Майер С. М. Гуревичу I.на вес золота или Еще один ресурс - Сравнительное исследование Wiktionary, OpenThesaurus и GermaNet. 2010.

ответ

1

После нескольких наших примерочных и обанкротиться попытки ... Большая проблема в том, что EPrints не чисто Perl, и не слишком много документации ...

Нам нужно изменить цитаты файл /eprints/cfg/citations/eprint/default.xml). Существует следующее решение:

<!-- Monograph: if < 4 authors then print 'authors' before title --> 
<when test="type = 'monograph'"> 

     <if test="is_set(creators_name)"> 

      <set name='authors' expr="creators_name"> 
       (Debug information) Number of authors: 
       <print expr="$authors.length()"/>. 

       <set name='authors_len' expr="$authors.length()"> 

        <if test="$authors_len lt 4"> 
         <print expr="creators_name"/> 
        </if> 
       </set> 
      </set> 
     </if> 
</when> 

<!-- Title --> 
<cite:linkhere><xhtml:em><print expr="title"/>:</xhtml:em></cite:linkhere> 


<!-- "/ authors" after Title for monography if len(authors)>3 --> 
<choose> 
    <when test="type = 'monograph'"> 

     <if test="is_set(creators_name)"> 

      <set name='authors' expr="creators_name"> 
       <set name='authors_len' expr="$authors.length()"> 

        <if test="$authors_len gt 3"> 
        /<print expr="creators_name"/> 
        </if> 

       </set> 
      </set> 
     </if> 
    </when> 

    <otherwise> 
    </otherwise> 
</choose> 

Это работает, но ... Я рассчитал дважды ту же переменную «authors_len». И я не знаю, как повторно использовать эту переменную и рассчитать ее только один раз.

Я попытался EPrints функционировать «is_set (authors_len)», и я попробовал «is_set ($ authors_len)», но EPrints бросает различные сообщения об ошибках его

1

Я хотел бы использовать следующий, проверяя для creators_name быть установлено, и сколько создатели есть:

<when test="type = 'monograph'"> 
    <choose> 
    <when test="is_set(creators_name) and length(creators_name) lt 4"> 
     <print expr="creators_name" /> 
    /
     <print expr="title" /> 
    </when> 
    <when test="is_set(creators_name) and length(creators_name) gt 3"> 
     <print expr="title" /> 
    /
     <print expr="creators_name" /> 
    </when> 
    <otherwise> 
     <print expr="title" /> 
    </otherwise> 
    </choose> 
</when> 

при использовании комментариев XML в файле цитируемости EPrints, они будут появляться в HTML исходный код страницы. Для того, чтобы сделать комментарии в файле цитируемость, которые не появляются в источнике HTML, вы можете использовать:

<comment>This will not appear in the html source</comment> 

язык, используемый для Eprints цитат документирован на EPrints Wiki:

Некоторые файлы конфигурации XML используют разные пространства имен по умолчанию - поэтому вы можете видеть элементы с префиксами с именами темп, например.

<cite:citation xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns="http://eprints.org/ep3/control" xmlns:cite="http://eprints.org/ep3/citation" > 
    ... 
    <epc:comment>This is a comment</epc:comment> 
    ... 
</cite:citation> 

Лучшее место для помощи с EPrints их список рассылки - поиск вик (ссылки выше) для деталей (у меня нет достаточной репутации, чтобы отправить другую ссылку!).