EPrints Control Format

From EPrints Documentation
Revision as of 17:19, 18 May 2010 by Cjg (Talk | contribs)

Jump to: navigation, search

EPrints 3 Reference: Directory Structure - Metadata Fields - Repository Configuration - XML Config Files - XML Export Format - EPrints data structure - Core API - Data Objects


XML Configuration: EPScript - Control Format (EPC) - Citation - Workflow - Phrase - Template - XPAGE (static pages)


EPrints Control

Output Tags

epc:print

<epc:print expr='expression' opt='key=value;key2=value2'/>
<cite:citation xmlns="http://www.w3.org/1999/xhtml"
          xmlns:cite="http://eprints.org/ep3/citation"
          xmlns:epc="http://eprints.org/ep3/control">
    <epc:print expr="$item.citation('default')" />
</cite:citation> 

Outputs the result of the expression in the 'expr' attribute.

Rendering options may be passed in the opt attribute using a key=value form, with semicolons separating multiple options.

Any EPScript expression can be used. The most simple is just 'eprintid','title','creators' etc. You can also use values from the configuration files by using '$config{base_url}'.

Print in attributes using {}

Sometimes you may wish to insert a value into an XML attribute. eg. the "href" part of an anchor. Rather than a complicated system, but correct XML, we decide to go for something a bit more readable. Any {} pair in an XML attribute will be treated as a epc:print.

So you can do something like

<a href="http://eprints.badger.edu/cgi/myscript.pl?eprintid={eprintid}">run myscript on this eprint</a>

epc:phrase

simple:

<epc:phrase ref='phraseid' />

with pins:

<epc:phrase ref='phraseid'>
  <epc:param name='somepin'>Content</epc:param>
</epc:phrase>

Outputs the content of the phrase refered to by 'ref'. Any necessary parameters may be set using the <epc:param> tag, with the contents inserted into the pin with the name corresponding to the name attribute.

Conditional Tags

epc:if

<epc:if test='expr'>
...
</epc:if>

Outputs any XHTML content and evaluates any EPrints Control structures within the epc:if block if the expression in the test attribute is true.

epc:choose, epc:when, epc:otherwise

<epc:choose>
  <epc:when test='expr'> 
  ...
  </epc:when>
  <epc:when test='expr2'> 
  ...
  </epc:when>
  <epc:otherwise>
  ...
  </epc:otherwise>
</epc:choose>

epc:choose allows for the construction of a complex conditional. Each epc:when block's 'test' attribute is evaluated, and the content of the block is returned if the result is true. If no expressions return true, the optional epc:otherwise block is returned. Note that no subsequent epc:when blocks are evaluated once the first block to return true is reached.

Loops

Multiple values can be iterated over. For example.

 <epc:foreach expr="creators_name" iterator="name">
   ( <epc:print expr="$name" /> )
 </epc:foreach>

$index (3.2.0+)

Within a foreach block you can use $index to find what iteration of the loop is on. The first value is zero.

This can be used with the modulus "%" to add a strip effect, if wanted, eg.

 <table>
  <epc:foreach expr="creators_name" iterator="name">
    <epc:if expr="$index % 2">
      <tr class='odd'><td><epc:print expr="$name" /></td></tr>
    </epc:if>
    <epc:if expr="!($index % 2)">
      <tr class='even'><td><epc:print expr="$name" /></td></tr>
    </epc:if>
  </epc:foreach>
  </table>