DSpace System Documentation: Configuration and Customization

Back to contents

There are a number of ways in which DSpace can be configured and/or customized:

Of these methods, only the last is likely to cause any headaches; if you update the DSpace source code directly, particularly core class files in org.dspace.* or org.dspace.storage.*, it may make applying future updates difficult. Before doing this, it is strongly recommended that you e-mail the DSpace developer community to find out the best way to proceed, and hte best way to implement your change in a way that can be contributed back to DSpace for everyone's benefit (and saving you from having sole responsibility to maintain the code).

The dspace.cfg Configuration Properties File

The primary way of configuring DSpace is to edit the dspace.cfg. You'll definitely have to do this before you can operate DSpace properly. dspace.cfg contains basic information about a DSpace installation, including system path information, network host information, and other things like site name.

The default dspace.cfg is a good source of information, and contains comments for all properties. It's a basic Java properties file, where lines are either comments, starting with a '#', blank lines, or property/value pairs of the form:

property.name = property value

The property value may contain references to other configuration properties, in the form ${property.name}. This follows the ant convention of allowing references in property files. A property may not refer to itself. Examples:

property.name = word1 ${other.property.name} more words
property2.name = ${dspace.dir}/rest/of/path

Due to time constraints, this document does not contain an exhaustive list of properties; they are all listed in the supplied dspace.cfg. Below are some particularly relevant properties with notes for their use:

dspace.cfg Main Properties (Not Complete)
Property Example Values Notes
dspace.dir /dspace Root directory of DSpace installation. Omit the trailing '/'. Note that if you change this, there are several other parameters you will probably want to change to match, e.g. assetstore.dir.
dspace.url http://dspace.myu.edu
http://dspacetest.myu.edu:8080
Main URL at which DSpace Web UI webapp is deployed. Include any port number, but do not include a trailing '/'
dspace.hostname dspace.myu.edu Fully qualified hostname; do not include port number
dspace.name DSpace at My University Short and sweet site name, used throughout Web UI, e-mails and elsewhere (such as OAI protocol)
config.template.foo /opt/othertool/cfg/foo When install-configs is run, the file [dspace]/config/templates/foo file will be filled out with values from dspace.cfg and copied to the value of this property, in this example /opt/othertool/cfg/foo. See here for more information.
plugin.sequence.org.dspace
.eperson.AuthenticationMethod
org.dspace.eperson
.X509Authentication, org.dspace.eperson
.PasswordAuthentication
Comma-separated list of classes implementing the org.dspace.eperson.AuthenticationMethod interface, which make up the authentication stack. Authentication methods are called on in the order listed.
authentication.x509.keystore.path /tomcat/conf/keystore Path to Java keystore containing Client CA's certificiate for client X.509 certificates (Optional; only needed if X.509 user authentication is used.)
authentication.x509.keystore.password changeit Password to Java keystore configured above in authentication.x509.keystore.path
handle.prefix 1721.1234 The Handle prefix for your site, see the Handle section
assetstore.dir /bigdisk/store The location in the file system for asset (bitstream) store number zero. This should be a directory for the sole use of DSpace.
assetstore.dir.n /anotherdisk/store1 The location in the file system of asset (bitstream) store number n. When adding additional stores, start with 1 (assetstore.dir.1 and count upwards. Always leave asset store zero (assetstore.dir). For more details, see the Bitstream Storage section.
assetstore.incoming 1 The asset store number to use for storing new bitstreams. For example, if assetstore.dir.1 is /anotherdisk/store1, and assetstore.incoming is 1, new bitstreams will be stored under /anotherdisk/store1. A value of 0 (zero) corresponds to assetstore.dir. For more details, see the Bitstream Storage section.
srb.xxx
srb.xxx.n
/zone/home/user.domain
The sets of SRB access parameters (see dspace.cfg) if one or more SRB accounts are used. The srb.xxx set would correspond to asset (bitstream) store number zero. The srb.xxx.n set would correspond to asset (bitstream) store number n. For more details, see the Bitstream Storage section.
webui.submit.enable-cc true Enable the Creative Commons license step in the submission process. Submitters are given an opportunity to select a Creative Commons license to accompany the Item. Creative Commons licenses govern the use of the content. For more details, see the Creative Commons website.

Property values can include other, previously defined values, by enclosing the property name in ${...}. For example, if your dspace.cfg contains: -

  dspace.dir = /dspace
  dspace.history = ${dspace.dir}/history
  

Then the value of the dspace.history property is expanded to be /dspace/history. This method is especially useful for handling commonly used file paths.

Whenever you edit dspace.cfg, you should then run [dspace]/bin/install-configs so that any changes you may have made are reflected in the configuration files of other applications, for example Apache. You may then need to restart those applications, depending on what you changed.

Wording of E-mail Messages

Sometimes DSpace automatically sends e-mail messages to users, for example to inform them of a new workflow task, or as a subscription e-mail alert. The wording of emails can be changed by editing the relevant file in [dspace]/config/emails. Each file is commented. Be careful to keep the right number 'placeholders' (e.g.{2}).
Note: You should replace the contact-information "[email protected] or call us at xxx-555-xxxx" with your own contact details in:

The Metadata and Bitstream Format Registries

The [dspace]/config/registries directory contains two XML files. These are used to load the initial contents of the Dublin Core Metadata registry and Bitstream Format registry. After the initial loading (performed by ant fresh_install above), the registries reside in the database; the XML files are not updated.

In order to change the registries, you may adjust the XML files before the first installation of DSpace. On an allready running instance it is recommended to change the registries via DSpace admin UI. The changes made via admin UI are not reflected in the XML files.

Metadata Format Registries

The default metadata schema is Dublin Core, so DSpace is distributed with a default Dublin Core Metadata Registry. Currently, the system requires that every item have a Dublin Core record.
Via the DSpace admin UI you may define new Metadata Schemas, edit existing schemas and move elements between schemas.
There is a set of Dublin Core Elements, which is used by the system and should not be removed or moved to another schema, see Appendix: Default Dublin Core Metadata registry.
Note: altering a Metadata Registry has no effect on corresponding parts, e.g. item submission interface, item display, item import and vice versa. Every metadata element used in submission interface or item import must be registered before using it.
Note also that deleting a metadata element will delete all its corresponding values.

Bitstream Format Registry

The bitstream formats recognized by the system and levels of support are similarly stored in the bitstream format registry. This can also be edited at install-time via [dspace]/config/registries/bitstream-formats.xml or by the administation Web UI. The contents of the bitstream format registry are entirely up to you, though the system requires that the following two formats are present:

Note: Deleting a format will cause any existing bitstreams of this format to be reverted to the unknown bitstream format.

The Default Submission License

For each submitted item, a license must be granted. The license will be stored along with the item in the bundle LICENSE in order to keep the information under which terms an items has been published.

You may define a license for each collection seperately, when creating/editing a collection. If no collection specific license is defined, the default license is used.

The default license can be found in [dspace]/config/default.license and can be edited via the dspace-admin interface.

DSpace comes with a demo license, which you must adopt to your institutional needs and the legal regulations of your country.

If in doubt, contact the law department of your institution.

Possible Points in a License

Note, that this is no legal advice, just some starting thoughts for creating you own license.

Activating Additional OAI-PMH Crosswalks

DSpace comes with an unqualified DC Crosswalk used in the default OAI-PMH data provider. There are also other Crosswalks bundled with the DSpace distribution which can be activated by editing one or more configuration files. How to do this for each available Crosswalk is described below.

METS

The old DSpace 1.3 METS Crosswalk can be activated as follows:

  1. Uncomment the METS Crosswalk entry from the config/templates/oaicat.properties file
  2. Run the bin/install-configs script
  3. Restart Tomcat
  4. Verify the Crosswalk is activated by accessing a URL such as http://mydspace/dspace-oai/request?verb=ListRecords&metadataPrefix=mets

Crosswalk Plugins

OAI-PMH crosswalks based on Crosswalk Plugins, including the new (DSpace 1.4) METS crosswalk, are activated as follows:

  1. Ensure the crosswalk plugin has a lower-case name (possibly in addition to its upper-case name) in the plugin configuration.
  2. Add a line to the file config/templates/oaicat.properties of the form:
    Crosswalks.plugin_name=org.dspace.app.oai.PluginCrosswalk
    substituting the plugin's name, e.g. "mets" or "qdc"for plugin_name.
  3. Run the bin/install-configs script
  4. Restart your servlet container, e.g. Tomcat, for the change to take effect.
The DSpace 1.4 source includes the following crosswalk plugins available for use with OAI-PMH:

DIDL

By activating the DIDL provider, DSpace items are represented as MPEG-21 DIDL objects. These DIDL objects are XML documents that wrap both the Dublin Core metadata that describes the DSpace item and its actual bitstreams. A bitstream is provided inline in the DIDL object in a base64 encoded manner, and/or by means of a pointer to the bitstream. The data provider exposes DIDL objects via the metadataPrefix didl.

The crosswalk does not deal with special characters and purposely skips dissemination of the license.txt file awaiting a better understanding on how to map DSpace rights information to MPEG21-DIDL.

The DIDL Crosswalk can be activated as follows:

Configuration Files for Other Applications

To ease the hassle of keeping configuration files for other applications involved in running a DSpace site, for example Apache, in sync, the DSpace system can automatically update them for you when the main DSpace configuration is changed. This feature of the DSpace system is entirely optional, but we found it useful.

The way this is done is by placing the configuration files for those applications in [dspace]/config/templates, and inserting special values in the configuration file that will be filled out with appropriate DSpace configuration properties. Then, tell DSpace where to put filled-out, 'live' version of the configuration by adding an appropriate property to dspace.cfg, and run [dspace]/bin/install-configs.

Take the apache13.conf file as an example. This contains plenty of Apache-specific stuff, but where it uses a value that should be kept in sync across DSpace and associated applications, a 'placeholder' value is written. For example, the host name:

ServerName @@dspace.hostname@@

The text @@dspace.hostname@@ will be filled out with the value of the dspace.hostname property in dspace.cfg. Then we decide where we want the 'live' version, that is, the version actually read in by Apache when it starts up, will go.

Let's say we want the live version to be located at /opt/apache/conf/dspace-httpd.conf. To do this, we add the following property to dspace.cfg so DSpace knows where to put it:

config.template.apache13.conf = /opt/apache/conf/dspace-httpd.conf

Now, we run [dspace]/bin/install-configs. This reads in [dspace]/config/templates/apache13.conf, and places a copy at /opt/apache/conf/dspace-httpd.conf with the placeholders filled out.

So, in /opt/apache/conf/dspace-httpd.conf, there will be a line like:

ServerName dspace.myu.edu

The advantage of this approach is that if a property like the hostname changes, you can just change it in dspace.cfg and run install-configs, and all of your tools' configuration files will be updated.

However, take care to make all your edits to the versions in [dspace]/config/templates! It's a wise idea to put a big reminder at the top of each file, since someone might unwittingly edit a 'live' configuration file which would later be overwritten.

Customizing the Web User Interface

The Web UI is implemented using Java Servlets which handle the business logic, and JavaServer Pages (JSPs) which produce the HTML pages sent to an end-user. Since the JSPs are much closer to HTML than Java code, altering the look and feel of DSpace is relatively easy.

To make it even easier, DSpace allows you to 'override' the JSPs included in the source distribution with modified versions, that are stored in a separate place, so when it comes to updating your site with a new DSpace release, your modified versions will not be overwritten. It should be possible to dramatically change the look of DSpace to suit your organization by just changing the CSS style file and the site 'skin' or 'layout' JSPs in jsp/layout; if possible, it is recommended you limit local customizations to these files to make future upgrades easier.

You can also easily edit the text that appears on each JSP page by editing the dictionary file. However, note that unless you change the entry in all of the different language message files, users of other languages will still see the default text for their language. See internationalization.

Note that the data (attributes) passed from an underlying Servlet to the JSP may change between versions, so you may have to modify your customized JSP to deal with the new data.

Thus, if possible, it is recommeded you limit your changes to the 'layout' JSPs and the stylesheet.

The JSPs are stored in [dspace-source]/jsp. Place your edited version of a JSP in the [dspace-source]/jsp/local directory, with the same path as the original. If they exist, these will be used in preference to the distributed versions in [dspace-source]/jsp. For example:

DSpace default Locally-modified version
[dspace-source]/jsp/community-list.jsp [dspace-source]/jsp/local/community-list.jsp
[dspace-source]/jsp/mydspace/main.jsp [dspace-source]/jsp/local/mydspace/main.jsp

Heavy use is made of a style sheet, in [dspace-source]/jsp/styles.css.jsp. If you make edits, call the local version [dspace-source]/jsp/local/styles.css.jsp, and it will be used automatically in preference to the default, as described above.

Fonts and colors can be easily changed using the stylesheet. The stylesheet is a JSP so that the user's browser version can be detected and the stylesheet tweaked accordingly.

The 'layout' of each page, that is, the top and bottom banners and the navigation bar, are determined by the JSPs [dspace-source]/jsp/layout/header-*.jsp and [dspace-source]/jsp/layout/footer-*.jsp. You can provide modified versions of these (in [dspace-source]/jsp/local/layout, or define more styles and apply them to pages by using the "style" attribute of the dspace:layout tag.

After you've customized your JSPs, you must rebuild the DSpace Web application. If you haven't already built and installed it, follow the install directions. Otherwise, follow the steps below:

  1. Rebuild the dspace.war file by running the following command from your [dspace-source] directory:

    ant -Dconfig=[dspace]/config/dspace.cfg build_wars
    
  2. Shut down Tomcat, and delete the existing [tomcat]/webapps/dspace directory.

  3. Copy the new .war file to the Tomcat webapps directory:

    cp [dspace-source]/build/dspace.war [tomcat]/webapps
    

When you restart the web server you should see your customized JSPs.

Customizing the Simple Item Display Metadata

Customizing the Default Simple Item Display Metadata

In dspace.cfg create a webui.itemdisplay.default item specifying a comma-separated list of metadata fields to display. For example,

webui.itemdisplay.default = dc.title, dc.date.issued(date), dc.identifier.uri(link), dc.description.*

will set the default simple item display to show the Dublin Core title, issue date (in date format), handle URI (rendered as a link) and all DC description metadata. If no webui.itemdisplay.default is present, the default defers to a preset list hard-coded in DSpace. If an item has no value for a particular field, it won't be displayed.

Add entries to the Messages.properties file as required. The name of the field for display will be drawn from the current UI dictionary, using the key metadata.<metadata field>. For example metadata.dc.title = Title

The metadata in dspace.cfg can be specified in the form <schema prefix>.<element>[.<qualifier>|.*][(date)|(link)], .... For example,

Customizing the Simple Item Display Metadata for Individual Collections

Create dspace.cfg entries for each of the "styles" of item display in the same way the default layout is configured. For example,

webui.itemdisplay.thesis-style = dc.contributor.*, dc.identifier.uri, dc.description.abstract

Then associate this simple item display with collections using an additional dspace.cfg item. For example,

webui.itemdisplay.thesis-style.collections = 123456789/1, 123456789/56

Don't forget to add any required message keys to the Messages.properties file. In the above example, the Messages.properties file would need to contain something like:

metadata.dc.contributor.* = Authors
metadata.dc.identifier.uri = Citation
metadata.dc.description.abstract = Abstract

Custom Authentication Code

Since many institutions and organizations have exisiting authentication systems, DSpace has been designed to allow these to be easily integrated into an existing authentication infrastructure. It keeps a series, or "stack", of authentication methods, so each one can be tried in turn. This makes it easy to add new authentication methods or rearrange the order without changing any existing code. You can also share authentication code with other sites.

The configuration property plugin.sequence.org.dspace.eperson.AuthenticationMethod defines the authentication stack. It is a comma-separated list of class names. Each of these classes implements a different authentication method, or way of determining the identity of the user. They are invoked in the order specified until one succeeds.

An authentication method is a class that implements the interface org.dspace.eperson.AuthenticationMethod. It authenticates a user by evaluating the credentials (e.g. username and password) he or she presents and checking that they are valid.

The basic authentication procedure in the DSpace Web UI is this:

  1. A request is received from an end-user's browser that, if fulfilled, would lead to an action requiring authorization taking place.
  2. If the end-user is already authenticated:
  3. The parameters etc. of the request are stored
  4. The Web UI's startAuthentication method is invoked.
  5. First it tries all the authentication methods which do implicit authentication (i.e. they work with just the information already in the Web request, such as an X.509 client certificate). If one of these succeeds, it proceeds from Step 2 above.
  6. If none of the implicit methods succeed, the UI responds by putting up a "login" page to collect credentials for one of the explicit authentication methods in the stack. The servlet processing that page then gives the proffered credentials to each authentication method in turn until one succeeds, at which point it retries the original operation from Step 2 above.

Please see the source files AuthenticationManager.java and AuthenticationMethod.java for more details about this mechanism.

Authentication by Password

The default method org.dspace.eperson.PasswordAuthentication has the following properties:

LDAP Authentication

As of version 1.3, the authentication method org.dspace.eperson.LDAPAuthentication is also supplied to support LDAP authentication.

X.509 Certificate Authentication

The X.509 authentication method uses an X.509 certificate sent by the client to establish his/her identity. It requires the client to have a personal Web certificate installed on their browser (or other client software) which is issued by a Certifying Authority (CA) recognized by the web server.

  1. See the HTTPS installation instructions to configure your Web server. If you are using HTTPS with Tomcat, note that the <Connector> tag must include the attribute clientAuth="true" so the server requests a personal Web certificate from the client.

  2. Add the org.dspace.eperson.X509Authentication plugin first to the list of stackable authentication methods in the value of the configuration key plugin.sequence.org.dspace.eperson.AuthenticationMethod E.g.:

        plugin.sequence.org.dspace.eperson.AuthenticationMethod = \
            org.dspace.eperson.X509Authentication, \
            org.dspace.eperson.PasswordAuthentication
      
  3. You must also configure DSpace with the same CA certificates as the web server, so it can accept and interpret the clients' certificates. It can share the same keystore file as the web server, or a separate one, or a CA certificate in a file by itself. Configure it by one of these methods, either the Java keystore
      authentication.x509.keystore.path = path to Java keystore file
      authentication.x509.keystore.password = password to access the keystore
     
    ...or the separate CA certificate file (in PEM or DER format):
      authentication.x509.ca.cert = path to certificate file for CA whose client certs to accept.
     

  4. Choose whether to enable auto-registration: If you want users who authenticate successfully to be automatically registered as new E-Persons if they are not already, set the authentication.x509.autoregister configuration property to true. This lets you automatically accept all users with valid personal certificates. The default is false.

Example of a Custom Authentication Method

Also included in the source is an implementation of an authentication method used at MIT, edu.mit.dspace.MITSpecialGroup. This does not actually authenticate a user, it only adds the current user to a special (dynamic) group called 'MIT Users' (which must be present in the system!). This allows us to create authorization policies for MIT users without having to manually maintain membership of the MIT users group.

By keeping this code in a separate method, we can customize the authentication process for MIT by simply adding it to the stack in the DSpace configuration. None of the code has to be touched.

You can create your own custom authentication method and add it to the stack. Use the most similar existing method as a model, e.g. org.dspace.eperson.PasswordAuthentication for an "explicit" method (with credentials entered interactively) or org.dspace.eperson.X509Authentication for an implicit method.

Configuring LDAP Authentication

You can enable LDAP authentication by adding its method to the stack in the DSpace configuration, e.g.

plugin.sequence.org.dspace.eperson.AuthenticationMethod = org.dspace.eperson.LDAPAuthentication

If LDAP is enabled in the dspace.cfg file, then new users will be able to register by entering their username and password without being sent the registration token. If users do not have a username and password, then they can still register and login with just their email address the same way they do now.

If you want to give any special privileges to LDAP users, create a stackable authentication method to automatically put people who have a netid into a special group. You might also want to give certain email addresses special privileges. Refer to the Custom Authentication Code section above for more information about how to do this.

Here is an explanation of what each of the different configuration parameters are for:

Configuring Lucene Search Indexes

(Available in DSpace 1.2.1+)

Search Indexes can be configured via the dspace.cfg file. This allows institutions to choose which DSpace metadata fields are indexed by Lucene. Note that as of DSpace 1.4, the schema for the element is also required.

For example, the following entries appear in a default DSpace installation:

search.index.1 = author:dc.contributor.*
search.index.2 = author:dc.creator.*
search.index.3 = title:dc.title.*
search.index.4 = keyword:dc.subject.*
search.index.5 = abstract:dc.description.abstract
search.index.6 = author:dc.description.statementofresponsibility
search.index.7 = series:dc.relation.ispartofseries
search.index.8 = abstract:dc.description.tableofcontents
search.index.9 = mime:dc.format.mimetype
search.index.10 = sponsor:dc.description.sponsorship
search.index.11 = id:dc.identifier.*
	

The form of each entry is search.index.<id> = <search <schema>field>:<metadata field> where:

So in the example above, search.indexes1, 2 and 6 are configured as the author search field. The author index is created by Lucene indexing all contributor, creator and description.statementofresponsibility medatata fields.

After changing the configuration, run index-all to recreate the indexes.

NOTE: While the indexes are created, this only affects the search results and has no effect on the search components of the user interface. To add new search capability (e.g. to add a new search category to the Advanced Search) requires local customisation to the user interface.

Media Filters

Media Filters are classes used to generate derivative or alternative versions of master bitstreams. For example, the PDF Media Filter will extract textual content from PDF bitstreams, the JPEG Media Filter can create thumbnails from image bitstreams.

Media Filters are configured as a Sequence Plugin, with each filter also having a separate config item indicating which formats it can process. The default configuration is shown below.

#### Media Filter plugins (through PluginManager) ####

plugin.sequence.org.dspace.app.mediafilter.MediaFilter = \
    org.dspace.app.mediafilter.PDFFilter, org.dspace.app.mediafilter.HTMLFilter, \
    org.dspace.app.mediafilter.WordFilter, org.dspace.app.mediafilter.JPEGFilter
# to enable branded preview: remove last line above, and uncomment 2 lines below
#   org.dspace.app.mediafilter.WordFilter, org.dspace.app.mediafilter.JPEGFilter, \
#   org.dspace.app.mediafilter.BrandedPreviewJPEGFilter

filter.org.dspace.app.mediafilter.PDFFilter.inputFormats = Adobe PDF
filter.org.dspace.app.mediafilter.HTMLFilter.inputFormats = HTML, Text
filter.org.dspace.app.mediafilter.WordFilter.inputFormats = Microsoft Word
filter.org.dspace.app.mediafilter.JPEGFilter.inputFormats = GIF, JPEG, image/png
filter.org.dspace.app.mediafilter.BrandedPreviewJPEGFilter.inputFormats = GIF, JPEG, image/png

To add a new Media Filter, add the new filter class to the plugin.sequence.org.dspace.app.mediafilter.MediaFilter config item and add a corresponding filter.<class path>.inputFormats config item. Note the input formats must match the short_description field in the bitstreamformatregistry table.

Configuring System Statistical Reports

Statistics for the system can be made available at http://www.mydspaceinstance.edu/statistics. To use the system statistics you will have to initialise them as per the installation documentation, but before you do so you need to perform the customisations discussed here in order to ensure that the reports are generated correctly.

Configuration File

Configuration for the statistics system are in [dspace]/config/dstat.cfg and the file should guide you to correctly filling in the details required. For the most part you will not need to change this file.

Customising Shell Scripts

To customise the supplied perl scripts to do monthly and general report generation it is necessary to modify the scripts themselves sightly. This is because these scripts were developed to speed up the process of using DStat at Edinburgh University Library and were not particularly intended for external use. They appear here for the convenience of others and in order to bridge the gap between the report generation and the inclusion of those reports into the DSpace UI, which is currently a clunky process.

In order to get these scripts to work for you, open each of the following in turn:

stat-general
stat-initial
stat-monthly
stat-report-general
stat-report-initial
stat-report-monthly

scripts eding with -general do the work for building reports spanning the entire history of the archive; scripts ending -initial are to initialise the reports by doing monthly reports from some start date up to the present; scripts ending -monthly generate a single monthly report for the current month. These scripts are just designed to make life easier, and are not particularly clever or elegant.

In each file you will find a section:

# Details used
################################################

... some perl ...

################################################

the perl between the lines of hashes defines the variables which will be used to do all of the processing in the report. The following explains what the variables mean and what they should be set to for each of the scripts

stat-initial:
$out_prefix: prefix to place in front of each output file.
$out_suffix: suffix for output file. A date will be inserted between the prefix and suffix
$start_year: year to start back-analysing monthly logs from
$start_month: month to start back-analysing monthly logs from
$dsrun: path to your dsrun script, usually [dspace]/bin/dsrun
$out_directory: directory into which to place analysis files, for example [dspace]/bin/log/

stat-monthly:
$out_prefix: prefix to place in front of each output file.
$out_suffix: suffix for output file. A date will be inserted between the prefix and suffix
$dsrun: path to your dsrun script, usually [dspace]/bin/dsrun
$out_directory: directory into which to place analysis files, for example [dspace]/bin/log/

stat-general:
$out_prefix: prefix to place in front of each output file.
$out_suffix: suffix for output file. Today's date will be inserted between the prefix and suffix
$dsrun: path to your dsrun script, usually [dspace]/bin/dsrun
$out_directory: directory into which to place analysis files, for example [dspace]/bin/log/

stat-report-initial:
$in_prefix: the prefix of the files generated by stat-initial
$in_suffix: the suffix of the files generated by stat-initial
$out_prefix: the report file prefix. Should be "report-" in order to work with DSpace UI
$out_suffix: the report file suffix. Should be ".html" in order to work with DSpace UI
$start_year: the start year used in stat-initial
$start_month: the start month used in stat-initial
$dsrun: path to your dsrun script, usually [dspace]/bin/dsrun
$in_directory: directory where analysis files were placed in stat-initial
$out_directory: the live reports directory: [dspace]/reports/

stat-report-monthly:
$in_prefix: the prefix of the files generated by stat-monthly
$in_suffix: the suffix of the files generated by stat-monthly
$out_prefix: the report file prefix. Should be "report-" in order to work with DSpace UI
$out_suffix: the report file suffix. Should be ".html" in order to work with DSpace UI
$dsrun: path to your dsrun script, usually [dspace]/bin/dsrun
$in_directory: directory where analysis files were placed in stat-monthly
$out_directory: the live reports directory: [dspace]/reports/

stat-report-general:
$in_prefix: the prefix of the files generated by stat-general
$in_suffix: the suffix of the files generated by stat-general
$out_prefix: the report file prefix. Should be "report-general-" in order to work with DSpace UI
$out_suffix: the report file suffix. Should be ".html" in order to work with DSpace UI
$dsrun: path to your dsrun script, usually [dspace]/bin/dsrun
$in_directory: directory where analysis files were placed in stat-general
$out_directory: the live reports directory: [dspace]/reports/

If you want additional customisations, you will need to modify the lines which build the command to be executed and change the parameters passed to the java processes which actually carry out the analysis. For more information on these processes either build the javadocs or run:

[dspace]/bin/dsrun org.dspace.app.statistics.LogAnalyser -help
[dspace]/bin/dsrun org.dspace.app.statistics.ReportGenerator -help

Displaying Image Item Preview

For particular types of objects (currently various image formats), a preview feature can be activated. This provides a branded version of the DSpace bitstream for display on the Item Display page.

To activate this feature and display a preview image on the item page (all properties mentioned below are found in dspace.cfg):

  1. Uncomment the lines defining the list of configured mediafilters at plugin.sequence.org.dspace.app.mediafilter.MediaFilter to include org.dspace.app.mediafilter.BrandedPreviewJPEGFilter.
  2. Set the maximum pixel dimensions for the preview image by altering the webui.preview.maxwidth and webui.preview.maxheight (default is 600) config items.
  3. Set the webui.preview.brand to the text you want to brand the image with. The brand will appear as white text on a black background strip across the base of the image. For example you might set the text to the owning organisation. The handle is also displayed as part of the branding.
  4. Set the webui.preview.brand.abbrev. This is an abbreviated form of the webui.preview.brand text and will be shown where the brand text is longer than the image width (e.g. for narrow images).
  5. Set the webui.preview.brand.height to the height in pixels of the appended branding (default 20).
  6. Set the webui.preview.brand.font to the font for the brand text (default is SansSerif).
  7. Set the webui.preview.brand.fontpoint to the font size for the brand text (default is 12).
  8. Run [dspace]/bin/filter-media to generate the preview images. These will be stored in a BRANDED_PREVIEW bundle so won't interfere with existing bundles.
  9. Set webui.preview.enabled = true.
  10. Set webui.preview.dc if a metadata value is to appear just below the preview. For example, to highlight item rights you might set webui.preview.dc = rights or to show the description as part of the preview set webui.preview.dc = description.abstract. This is disabled by default.
  11. Restart Tomcat.

Displaying Image Thumbnails

Browse and Search Results Page Thumbnails

Image thumbnails can be enabled on the Browse and Search Results pages by setting the appropriate configuration values. To enable the display of thumbnails the following items must be set in the dspace.cfg file:

webui.browse.thumbnail.show = true

If set to false or this configuration item is missing then thumbnails will not be shown. Additionally, appropriate media filters must be configured and the media filter configured to run periodically (for example, via a 'cron' job)

The size of the browse/search thumbnails can also be configured to a smaller size than that generated by the mediafilter. To do this set the following configuration items:

webui.browse.thumbnail.maxheight = <maxheight in pixels>

webui.browse.thumbnail.maxwidth = <maxwidth in pixels>

If these configuration items are not set, thumbnail.maxheight and thumbnail.maxwidth are used. Setting these values greater than or equal to the size of the thumbnail generated by the mediafilter (i.e. thumbnail.maxheight and thumbnail.maxwidth) will have no effect.

Note:

Configuring Thumbnail Link Behaviour

The target of a thumbnail in the Browse and Search Results Page can be configured by setting the following configuration item:

webui.browse.thumbnail.linkbehaviour = <target page type>

Currently the values item and bitstream are allowed. If this configuration item is not set, or set incorrectly, the default is item.

Item Display Page Thumbnails

Thumbnails may also be enabled or disabled on the Item Display page by setting the following configuration item in dspace.cfg:

webui.item.thumbnail.show = true

If set to false or this configuration item is missing then thumbnails will not be shown.

Displaying Community and Collection Item Counts

To show the item count against communities and collections set the webui.strengths.show configuration item in the dspace.cfg file as follows:

webui.strengths.show = true

If this config item is missing or is set to any value other than true the item counts will not be shown.

Lucene Analyzer

The Lucene analyzer used in searching and indexing can be configured by setting the search.analyzer configuration item in dspace.cfg to the class of the desired analzyer. If this item is not present/commented out, the default Lucene analyzer org.dspace.search.DSAnalyzer is used.

As well as those analyzers included in the Lucene distribution (see lucene.jar), a Chinese analyzer from the Lucene sandbox is included in lucene-sandbox.jar. This analyzer is yet to be included in the core Lucene distribution but can be configured by setting search.analyzer = org.apache.lucene.analysis.cn.ChineseAnalyzer in dspace.cfg.

On-line Help About File Formats

Because the file format support policy is determined by each individual institution, the on-line help on this subject is intentionally left blank. The help file will, however, retrieve a list of formats and the support levels associated with them in your database and display this information to the user. We highly recommend that you edit the "Format Support Policy" section of the file [dspace-source]/jsp/help/formats.jsp.

View Item Licence

Setting webui.licence_bundle = true in dspace.cfg will result in a hyperlink being rendered on the Item View page that points to the item's licence.

Configuring RSS Syndication

In addition to the email subscription service, recent submissions to communities and collections are also available via RSS feeds. The feed link or links appear on the community and collection home pages, in the sidebar underneath the Recent Submissions citations. The content of the feed includes the community/collection handle, name, short description, and icon; for each item it includes: the handle, title, author, date issued, description, and abstract if present. Feed behavior can be configured by setting the following properties in dspace.cfg:

webui.feed.enable = true

Set the value of this property to true to enable RSS feeds. If false, feeds will not be generated, and the feed links will not appear.

webui.feed.items = 4

The value of this property governs the number of DSpace items appearing in each feed, which are the most recent n submissions.

webui.feed.cache.size = 100

To improve performance, generated feeds may be cached in memory. If caching is desired, set the value of this property to a positive number, which represents the total number of feeds kept in the cache at one time, for all communities and collections. A value of 0 disables caching, and the feed is generated on demand for each request. If the cache grows beyond the specified value, the least-requested feeds are removed to maintain its size. To assist you in optimization, whenever cache maintenance is performed a profile of the cache is recorded in the DSpace system log, showing its size, and the total, average, minimum, and maximum number of 'hits' against cached feeds.

webui.cache.age = 48

To ensure that the feeds in the cache remain current, requested feeds are checked after they reach a certain age. This property specifies that age in hours. A value of 0 will force a check with each request, which guarantees currency, but with a performance penalty. If caching is disabled, this property is ignored.

webui.feed.formats = rss_1.0,rss_2.0

The RSS feature supports several different syndication formats. If you wish only a single format to be offered, set the value of this property to that format, selecting only from the list of canonical names provided. If you wish multiple formats, set the value to a comma-separated list of canonical names. Each format will appear as a distinct icon and link in the community and collection home page, as well as an 'autodiscovery' link in the page header.

webui.feed.localresolve = false

By default, the RSS feed will return global handle server-based URLs to items, collections and communities (e.g. http://hdl.handle.net/123456789/1). This means if you have not registered your DSpace installation with the CNRI Handle Server (e.g. development or testing instance) the URLs returned by the feed will return an error if accessed. Setting webui.feed.localresolve = true will result in the RSS feed returning localised URLs (e.g. http://myserver.myorg/handle/123456789/1). If webui.feed.localresolve is set to false or not present the default global handle URL form is used.

webui.feed.item.title = dc.title
webui.feed.item.date = dc.date.issued

Specify which metadata field you want to be displayed as an item's title and date in the RSS feed. You can only specify a single metadata field for each of these properties.

webui.feed.item.description = dc.title, dc.contributor.author, \
dc.contributor.editor, dc.description.abstract, \
dc.description

Specify which metadata fields should be displayed in an item's description field in the RSS feed. You can specify as many fields as you wish here. The fields will be listed in the RSS feed in the order they appear, and will only be listed if they have values. Similar to the item display UI, the name of the field displayed in the feed will be drawn from the current UI dictionary, using the key: "metadata.<field>" (e.g. "metadata.dc.title", "metadata.dc.contributor.author", "metadata.dc.description.*")

Configuring Item Recommendations

The 'suggest an item' service is a convenient way for DSpace users to notify others via email about content they discover in the repository. If enabled, a link appears on the simple item display page leading to a form where the user can enter an email address, and additional optional information. Upon completion of the form, the system transmits a pre-formatted message about the item to that address. Item recommendation can be configured by setting the following properties in dspace.cfg:

webui.suggest.enable = true

Set the value of this property to true to expose the link to the recommendation form. If false, the link will not display.

webui.suggest.sender = A DSpace user

The form includes an optional field for the name of the person making the recommendation. The value of this property will be used if the sender is not specified. Note that if the user has been authenticated to DSpace, the e-person record will be used to set the default value of this field, and will also be used to set the 'reply-to' email header to the e-person's address.

webui.suggest.recipient = colleague

In addition to the required destination email address, the form includes an optional field for the name of person to whom the recommendation is to be sent. The value of this property will be used if the recipient name is not specified.

The wording and layout of the email message is governed by the template file [dspace]/config/emails/suggest. You may edit this file to alter the language, layout, type, or amount of information contained in the email, but note that the values passed to the template are limited to those enumerated at the top of the template file and represented in the body of the message with 'placeholders' {0}, {1}, etc. A general description of DSpace is included as a footer to the email, which may be replaced with site-specific content.

Configuring Controlled Vocabularies

DSpace now supports controlled vocabularies to confine the set of keywords that users can use while describing items.

The need for a limited set of keywords is important since it eliminates the ambiguity of a free description system, consequently simplifying the task of finding specific items of information.

The controlled vocabulary add-on allows the user to choose from a defined set of keywords organised in an tree (taxonomy) and then use these keywords to describe items while they are being submitted.

We have also developed a small search engine that displays the classification tree (or taxonomy) allowing the user to select the branches that best describe the information that he/she seeks.

The taxonomies are described in XML following this (very simple) structure:

<node id="acmccs98" label="ACMCCS98">
  <isComposedBy>
   <node id="A." label="General Literature">
    <isComposedBy>
     <node id="A.0" label="GENERAL"/>
     <node id="A.1" label="INTRODUCTORY AND SURVEY"/>
     ...
    </isComposedBy>
   </node>
   ...
  </isComposedBy>
</node>

Your are free to use any application you want to create your controlled vocabularies. A simple text editor should be enough for small projects. Bigger projects will require more complex tools. You may use Protegé to create your taxonomies, save them as OWL and then use a XML Stylesheet (XSLT) to transform your documents to the appropriate format. Future enhancements to this add-on should make it compatible with standard schemas such as OWL or RDF.

In order to make DSpace compatible with WAI 2.0, the add-on is turned off by default (the add-on relies strongly on Javascript to function). It can be activated by setting the following property in dspace.cfg:

webui.controlledvocabulary.enable = true

New vocabularies should be placed in [dspace]/config/controlled-vocabularies/ and must be according to the structure described. A validation XML Schema can be downloaded here.

Vocabularies need to be associated with the correspondant DC metadata fields. Edit the file [dspace]/config/input-forms.xml and place a "vocabulary" tag under the "field" element that you want to control. Set value of the "vocabulary" element to the name of the file that contains the vocabulary, leaving out the extension (the add-on will only load files with extension "*.xml"). For example:

<field>
    <dc-schema>dc</dc-schema>
    <dc-element>subject</dc-element>
    <dc-qualifier></dc-qualifier>
    <!-- An input-type of twobox MUST be marked as repeatable -->
    <repeatable>true</repeatable>
    <label>Subject Keywords</label>
    <input-type>twobox</input-type>
    <hint> Enter appropriate subject keywords or phrases below. </hint>
  <required></required>
  <vocabulary>nsi</vocabulary>
</field>

The following vocabularies are currently available by default:

Checksum Checker

There are three aspects of the Checksum Checker's operation that can be configured:

  1. the execution mode
  2. the logging output
  3. the policy for removing old checksum results from the database

Checker Execution Mode

Execution mode can be configured using command line options. Information on the options can be found at any time by running [dspace]/bin/checker --help. The different modes are described below; see the "Which to use" section that follows for details on the various pros and cons.

Unless a particular bitstream or handle is specified, the Checksum Checker will always check bitstreams in order of the least recently checked bitstream. (Note that this means that the most recently ingested bitstreams will be the last ones checked by the Checksum Checker.)

Limited Count Mode

To check a specific number of bitstreams, use the -c option followed by an integer number of bitstreams to check:

bin/checker -c 10

Limited count mode is particularly useful for checking that the checker is executing properly. The Checksum Checker's default execution mode is to check a single bitstream, as if the -c 1 option had been given.

Limited Duration Mode

To run the Checker for a specific period of time, use the -d option with a time argument:

bin/checker -d 10m
bin/checker -d 2h

Valid options for specifying duration are s for seconds, m for minutes, h for hours, d for days, w for weeks, and y for years (OK, so we're optimists).

The checker will keep starting new bitstream checks for the specified duration, so actual execution duration will be slightly longer than the specified duration. Bear this in mind when scheduling checks.

Check Specific Bitstreams

To check one or more particular bitstreams by ID, use the -b option followed by one or more bitstream IDs:

bin/checker -b 1 2 3 4

This mode is useful when analyzing problems reported in the logs and when verifying that a resolution has been successful.

Check Specific Handles

Use the -a option followed by a handle:

bin/checker -a 123456/123

This will check all the bitstreams inside an item, collection or community.

Continuous Looping

There are two looping modes:

bin/checker -l     # Loops once through the repository  
bin/checker -L	    # Loops continuously through the repository

The -l option can be used if your repository is relatively small and your backup strategy requires it to be completely validated at a particular point. The -L option might be useful if you have a large repository, and you don't mind (or can avoid) the IO load caused by the checker.

Which to Use

The Checksum Checker was designed with the idea that most sys admins will run it from the cron. For small repositories we recommend using the -l option in the cron. For larger repositories that cannot be completely checked in a couple of hours, we recommend the -d option in the cron.

Checker Reporting

Checksum Checker uses log4j to report its results. By default it will report to a log called [dspace]/log/checker.log, and it will report only on bitstreams for which the newly calculated checksum does not match the stored checksum. To report on all bitstreams checked regardless of outcome, use the -v (verbose) command line option:

bin/checker -l -v    #Loop through the repository once and
  report in detail about every bitstream checked.

To change the location of the log, or to modify the prefix used on each line of output, edit the [dspace]/config/templates/log4j.properties file and run [dspace]/bin/install_configs.

Checker Results Pruning

The Checksum Checker will store the result of every check in the checksum_history table. By default, successful checksum matches that are eight weeks old or older will be deleted when the -p command line option is used (unsuccessful ones will be retained indefinitely). The amount of time for which results are retained in the checksum_history table can be modified by one of two methods:

  1. editing the retention policies in [dspace]/config/dspace.cfg OR
  2. passing in a properties file containing retention policies when using the -p option.

Pruning is controlled by a number of properties, each of which describes a checksum result code, and the length of time for which results with that code should be retained. The format is checker.retention.[RESULT CODE]=[duration]. For example: -

checker.retention.CHECKSUM_MATCH=8w

indicates that successful checksum matches will be retained for eight weeks. Supported units of time are

s Seconds
m Minutes
h Hours
d Days
w Weeks
y Years

(Note that these units are also used for describing durations for the -d limited duration mode.)

There is a special property, checker.retention.default, that is used to assign a default retention period.

To execute the pruning you must use the -p command line option (with or without a properties file). Checksum Checker will prune the history table before beginning new checks. We recommend that you use this option regularly, as the checksum_history table can grow very large without it.

Configuring Packager Plugins

Package ingester plugins are configured as named or self-named plugins for the interface org.dspace.content.packager.PackageIngester. Package disseminator plugins are configured as named or self-named plugins for the interface org.dspace.content.packager.PackageDisseminator.

You can add names for the existing plugins, and add new plugins, by altering these configuration properties. See the Plugin Manager architecture for more information about plugins.

Configuring Crosswalk Plugins

Ingestion crosswalk plugins are configured as named or self-named plugins for the interface org.dspace.content.crosswalk.IngestionCrosswalk. Dissemination crosswalk plugins are configured as named or self-named plugins for the interface org.dspace.content.crosswalk.DisseminationCrosswalk.

You can add names for existing crosswalks, add new plugin classes, and add new configurations for the configurable crosswalks as noted below.

Configurable MODS dissemination crosswalk

The MODS crosswalk is a self-named plugin. To configure an instance of the MODS crosswalk, add a property to the DSpace configuration starting with "crosswalk.mods.properties."; the final word of the property name becomes the plugin's name. For example, a property name crosswalk.mods.properties.MODS defines a crosswalk plugin named "MODS".

The value of this property is a path to a separate properties file containing the configuration for this crosswalk. The pathname is relative to the DSpace configuration directory, i.e. the config subdirectory of the DSpace install directory. So, a line like:

 crosswalk.mods.properties.MODS = crosswalks/mods.properties
defines a crosswalk named MODS whose configuration comes from the file [dspace]/config/crosswalks/mods.properties.

The MODS crosswalk properties file is a list of properties describing how DSpace metadata elements are to be turned into elements of the MODS XML output document. The property name is a concatenation of the metadata schema, element name, and optionally the qualifier. For example, the contributor.author element in the native Dublin Core schema would be: dc.contributor.author. The value of the property is a line containing two segments separated by the vertical bar ("|"): The first part is an XML fragment which is copied into the output document. The second is an XPath expression describing where in that fragment to put the value of the metadata element. For example, in this property:

dc.contributor.author = <mods:name><mods:role><mods:roleTerm type="text">author</mods:roleTerm></mods:role><mods:namePart>%s</mods:namePart></mods:name> | mods:namePart/text()
Some of the examples include the string "%s" in the prototype XML where the text value is to be inserted, but don't pay any attention to it, it is an artifact that the crosswalk ignores.

For example, given an author named Jack Florey, the crosswalk will insert


<mods:name>
  <mods:role>
    <mods:roleTerm type="text">author</mods:roleTerm>
  </mods:role>
  <mods:namePart>Jack Florey</mods:namePart>
</mods:name> 
into the output document. Read the example configuration file for more details.

Configurable Qualified Dublin Core (QDC) dissemination crosswalk

The QDC crosswalk is a self-named plugin. To configure an instance of the QDC crosswalk, add a property to the DSpace configuration starting with "crosswalk.qdc.properties."; the final word of the property name becomes the plugin's name. For example, a property name crosswalk.qdc.properties.QDC defines a crosswalk plugin named "QDC".

The value of this property is a path to a separate properties file containing the configuration for this crosswalk. The pathname is relative to the DSpace configuration directory, i.e. the config subdirectory of the DSpace install directory. So, a line like:

  crosswalk.qdc.properties.QDC = crosswalks/qdc.properties
defines a crosswalk named QDC whose configuration comes from the file [dspace]/config/crosswalks/qdc.properties.

You'll also need to configure the namespaces and schema location strings for the XML output generated by this crosswalk. The namespaces property names are of the format:
crosswalk.qdc.namespace.prefix = uri
where prefix is the namespace prefix and uri is the namespace URI.

For example, this shows how a crosswalk named "QDC" would be configured:

crosswalk.qdc.properties.QDC = crosswalks/QDC.properties
crosswalk.qdc.namespace.QDC.dc = http://purl.org/dc/elements/1.1/
crosswalk.qdc.namespace.QDC.dcterms = http://purl.org/dc/terms/
crosswalk.qdc.schemaLocation.QDC  = \
  http://purl.org/dc/terms/ http://dublincore.org/schemas/xmls/qdc/2003/04/02/qualifieddc.xsd

The QDC crosswalk properties file is a list of properties describing how DSpace metadata elements are to be turned into elements of the Qualified DC XML output document. The property name is a concatenation of the metadata schema, element name, and optionally the qualifier. For example, the contributor.author element in the native Dublin Core schema would be: dc.contributor.author. The value of the property is an XML fragment, the element whose value will be set to the value of the metadata field in the property key.

For example, in this property:

  dc.coverage.temporal = <dcterms:temporal />
the generated XML in the output document would look like, e.g.:
  <dcterms:temporal>Fall, 2005</dcterms:temporal>

XSLT-based crosswalks

The XSLT crosswalks use XSL stylesheet transformation (XSLT) to transform an XML-based external metadata format to or from DSpace's internal metadata. XSLT crosswalks are much more powerful and flexible than the configurable MODS and QDC crosswalks, but they demand some esoteric knowledge (XSL stylesheets). Given that, you can create all the crosswalks you need just by adding stylesheets and configuration lines, without touching any of the Java code.

A submission crosswalk is described by a configuration key starting with 'crosswalk.submission.", like

  crosswalk.submission.PluginName.stylesheet = path
The PluginName is, of course, the plugin's name. The path value is the path to the file containing the crosswalk stylesheet (relative to dspace.dir/config).

Here is an example that configures a crosswalk named "LOM" using a stylesheet in [dspace]/config/crosswalks/d-lom.xsl:

  crosswalk.submission.stylesheet.LOM = crosswalks/d-lom.xsl

A dissemination crosswalk is described by a configuration key starting with 'crosswalk.dissemination.", like

  crosswalk.dissemination.PluginName.stylesheet = path
The PluginName is, of course, the plugin's name. The path value is the path to the file containing the crosswalk stylesheet (relative to dspace.dir/config).

You can make two different plugin names point to the same crosswalk, by adding two configuration entries with the same path, e.g.

    crosswalk.submission.MyFormat.stylesheet = crosswalks/myformat.xslt
    crosswalk.submission.almost_DC.stylesheet = crosswalks/myformat.xslt
 

The dissemination crosswalk must also be configured with an XML Namespace (including prefix and URI) and an XML Schema for its output format. This is configured on additional properties in the DSpace Configuration, i.e.:

   crosswalk.dissemination.PluginName.namespace.Prefix = namespace-URI
   crosswalk.dissemination.PluginName.schemaLocation = schemaLocation value 
For example:
   crosswalk.dissemination.qdc.namespace.dc = http://purl.org/dc/elements/1.1/
   crosswalk.dissemination.qdc.namespace.dcterms = http://purl.org/dc/terms/
   crosswalk.dissemination.qdc.schemaLocation = \
      http://purl.org/dc/elements/1.1/ http://dublincore.org/schemas/xmls/qdc/2003/04/02/qualifieddc.xsd 

DSpace Intermediate Metadata (DIM) format

XSLT crosswalk plugins translate between the external metadata format and an XML format called DSpace Intermediate Metadata, which exists only for the purpose of XSLT crosswalks. It is never to be exported from DSpace, since it is not an acknowledged metadata format, it is simply an expression of the way DSpace stores its metadata fields internally.

All the elements in a DIM document are in the namespace http://www.dspace.org/xmlns/dspace/dim.

The root element is named dim. It has zero or more children, all field elements. It may have an attribute dspaceType, which identifies the type of object ("ITEM", "COLLECTION", or "COMMUNITY") this metadata describes. This attribute is only guaranteed to be set for dissemination crosswalks.

Each field element may have the following attributes:

The value of field is the value of that metadata field. Fields with the same qualifiers may be repeated.

Here is an example of the DIM format:

    <dim:dim xmlns:dim="http://www.dspace.org/xmlns/dspace/dim" dspaceType="ITEM">
      <dim:field mdschema="dc" element="title" lang="en_US">
        The Endochronic Properties of Resublimated Thiotimonline
      </dim:field>
      <dim:field mdschema="dc" element="contributor" qualifier="author">
        Isaac Asimov
      </dim:field>
      <dim:field mdschema="dc" element="language" qualifier="iso">
        eng
      </dim:field>
      <dim:field mdschema="dc" element="subject" qualifier="other" lang="en_US">
        time-travel scifi hoax
      </dim:field>
      <dim:field element="publisher">
        Boston University Department of Biochemistry
      </dim:field>
    </dim:dim>

Testing XSLT Crosswalks

The XSLT crosswalks will automatically reload an XSL stylesheet that has been modified, so you can edit and test stylesheets without restarting DSpace.

You can test a dissemination crosswalk by hooking it up to an OAI-PMH crosswalk and using an OAI request to get the metadata for a known item.

Testing the submission crosswalk is more difficult, so we have supplied a command-line utility to help. It calls the crosswalk plugin to translate an XML document you submit, and displays the resulting intermediate XML (DIM). Invoke it with:

[dspace]/bin/dsrun org.dspace.content.crosswalk.XSLTIngestionCrosswalk [-l] plugin input-file
..where plugin is the name of the crosswalk plugin to test (e.g. "LOM"), and input-file is a file containing an XML document of metadata in the appropriate format.

Add the -l option to to pass the ingestion crosswalk a list of elements instead of a whole document, as if the List form of the ingest() method had been called. This is needed to test ingesters for formats like DC that get called with lists of elements instead of a root element.


Copyright © 2002-2004 MIT and Hewlett Packard