Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: expanded the entry on the hi element

Digital Repository Interface (DRI) is a schema that governs the structure of a Manakin DSpace page when encoded as an XML Document. It determines what elements can be present in the Document and the relationship of those elements to each other. This reference document explains the purpose of DRI, provides a broad architectural overview, and explains common design patterns. The appendix includes a complete reference for elements used in the DRI Schema, a graphical representation of the element hierarchy, and a quick reference table of elements and attributes.

Table of Contents:

Table of Contents
minLevel2
outlinetrue
stylenone

Introduction

This manual describes the Digital Repository Interface (DRI) as it applies to the DSpace digital repository and XMLUI Manakin based interface. DSpace XML UI is a comprehensive user interface system. It is centralized and generic, allowing it to be applied to all DSpace pages, effectively replacing the JSP-based interface system. Its ability to apply specific styles to arbitrarily large sets of DSpace pages significantly eases the task of adapting the DSpace look and feel to that of the adopting institution. This also allows for several levels of branding, lending institutional credibility to the repository and collections.

...

  • div (any)

Attributes

  • None
Code Block

<document version=1.0>
  <meta> ... </meta>
   <body>
    <div n="division-example1"
	id="XMLExample.div.division-example1">
     ...
    </div>
    <div n="division-example2" id="XMLExample.div.division-example2"
	interactive="yes" action="www.DRItest.com"
	method="post">
     ...
    </div>
     ...
   </body>
  <options> ... </options>
</document>

...

  • cols: (optional) The number of columns the cell spans.
  • id: (optional) A unique identifier of the element.
  • n: (optional) A local identifier used to differentiate the element from its siblings.
  • rend: (optional) A rendering hint used to override the default display of the element.
  • role: (optional) An optional attribute to override the containing row's role settings.
  • rows: (optional) The number of rows the cell spans.
Code Block

<table n="table-example" id="XMLExample.table.table-example" rows="2"
	cols="3">
    <row role="head">
       <cell cols="2">Data Label One and Two</cell> <cell>Data Label
	Three</cell>
      ...
    </row>
    <row>
       <cell> Value One </cell> <cell> Value Two </cell> <cell> Value
	Three </cell>
      ...
    </row>
    ...
</table>

...

  • action: (required for interactive) The form action attribute determines where the form information should be sent for processing.
  • behavior: (optional for interactive) The acceptable behavior options that may be used on this form. The only possible value defined at this time is "ajax" which means that the form may be submitted multiple times for each individual field in this form. Note that if the form is submitted multiple times it is best for the behaviorSensitiveFields to be updated as well.
  • behaviorSensitiveFields: (optional for interactive) A space separated list of field names that are sensitive to behavior. These fields must be updated each time a form is submitted with out a complete refresh of the page (i.e. ajax).
  • currentPage: (optional) For paginated divs, the currentPage attribute indicates the index of the page currently displayed for this div.
  • firstItemIndex: (optional) For paginated divs, the firstItemIndex attribute indicates the index of the first item included in this div.
  • id: (required) A unique identifier of the element.
  • interactive: (optional) Accepted values are "yes", "no". This attribute determines whether the div is interactive or static. Interactive divs must provide action and method and can contain field elements.
  • itemsTotal: (optional) For paginated divs, the itemsTotal attribute indicates how many items exit across all paginated divs.
  • lastItemIndex: (optional) For paginated divs, the lastItemIndex attribute indicates the index of the last item included in this div.
  • method: (required for interactive) Accepted values are "get", "post", and "multipart". Determines the method used to pass gathered field values to the handler specified by the action attribute. The multipart method should be used for uploading files.
  • n: (required) A local identifier used to differentiate the element from its siblings.
  • nextPage: (optional) For paginated divs the nextPage attribute points to the URL of the next page of the div, if it exists.
  • pagesTotal: (optional) For paginated divs, the pagesTotal attribute indicates how many pages the paginated divs spans.
  • pageURLMask: (optional) For paginated divs, the pageURLMask attribute contains the mask of a url to a particular page within the paginated set. The destination page's number should replace the {pageNum} string in the URL mask to generate a full URL to that page.
  • pagination: (optional) Accepted values are "simple", "masked". This attribute determines whether the div is spread over several pages. Simple paginated divs must provide previousPage, nextPage, itemsTotal, firstItemIndex, lastItemIndex attributes. Masked paginated divs must provide currentPage, pagesTotal, pageURLMask, itemsTotal, firstItemIndex, lastItemIndex attributes.
  • previousPage: (optional) For paginated divs the previousPage attribute points to the URL of the previous page of the div, if it exists.
  • rend: (optional) A rendering hint used to override the default display of the element. In the case of the div tag, it is also encouraged to label it as either "primary" or "secondary". Divs marked as primary contain content, while secondary divs contain auxiliary information or supporting fields.
Code Block

<body>
     <div n="division-example"
	id="XMLExample.div.division-example">
      <head> Example Division </head>
      <p> This example shows the use of divisions. </p>
      <table ...>
        ...
      </table>
      <referenceSet ...>
        ...
      </referenceSet>
      <list ...>
        ...
      </list>
       <div n="sub-division-example"
	id="XMLExample.div.sub-division-example">
        <p> Divisions may be nested </p>
        ...
       </div>
      ...
     </div>
    ...
</body>

...

  • disabled: (optional) Accepted values are "yes", "no". Determines whether the field allows user input. Rendering of disabled fields may vary with implementation and display media.
  • id: (required) A unique identifier for a field element.
  • n: (required) A non-unique local identifier used to differentiate the element from its siblings within an interactive division. This is the name of the field use when data is submitted back to the server.
  • rend: (optional) A rendering hint used to override the default display of the element.
  • required: (optional) Accepted values are "yes", "no". Determines whether the field is a required component of the form and thus cannot be left blank.
  • type: (required) A required attribute to specify the type of value. Accepted types are:
    • button: A button input control that when activated by the user will submit the form, including all the fields, back to the server for processing.
    • checkbox: A boolean input control which may be toggled by the user. A checkbox may have several fields which share the same name and each of those fields may be toggled independently. This is distinct from a radio button where only one field may be toggled.
    • file: An input control that allows the user to select files to be submitted with the form. Note that a form which uses a file field must use the multipart method.
    • hidden: An input control that is not rendered on the screen and hidden from the user.
    • password: A single-line text input control where the input text is rendered in such a way as to hide the characters from the user.
    • radio: A boolean input control which may be toggled by the user. Multiple radio button fields may share the same name. When this occurs only one field may be selected to be true. This is distinct from a checkbox where multiple fields may be toggled.
    • select: A menu input control which allows the user to select from a list of available options.
    • text: A single-line text input control.
    • textarea: A multi-line text input control.
    • composite: A composite input control combines several input controls into a single field. The only fields that may be combined together are: checkbox, password, select, text, and textarea. When fields are combined together they can posses multiple combined values.
Code Block

<p>
  <hi> ... </hi>
  <xref> ... </xref>
  <figure> ... </figure>
  ...
   <field id="XMLExample.field.name" n="name" type="text"
	required="yes">
    <params size="16" maxlength="32"/>
    <help>Some help text with <i18n>localized
	content</i18n>.</help>
    <value type="raw">Default value goes
	here</value>
   </field>
</p>

...

  • rend: (optional) A rendering hint used to override the default display of the element.
  • source: (optional) The source for the image, using either a URL or a pre-defined XML entity.
  • target: (optional) A target for an image used as a link, using either a URL or an id of an existing element as a destination.
Code Block

<p>
    <hi> ... </hi>
    ...
    <xref> ... </xref>
    ...
    <field> ... </field>
    ...
     <figure source="www.example.com/fig1"> This is a static image.
	</figure> <figure source="www.example.com/fig1"
	target="www.example.net">
      This image is also a link.
     </figure>
    ...
</p>

...

  • id: (optional) A unique identifier of the element
  • n: (optional) A local identifier used to differentiate the element from its siblings
  • rend: (optional) A rendering hint used to override the default display of the element.
Code Block

<div ...>
     <head> This is a simple header associated with its div element.
	</head>
    <div ...>
       <head rend="green"> This header will be green.
	</head>
      <p>
         <head> A header with <i18n>localized content</i18n>.
	</head>
        ...
      </p>
    </div>
    <table ...>
       <head> ...
	</head>
      ...
    </table>
    <list ...>
       <head> ...
	</head>
      ...
    </list>
    ...
</body>

...

  • none

Attributes

  • None
Code Block

<p>
    <hi> ... </hi>
    ...
    <xref> ... </xref>
    ...
    <figure> ... </figure>
    ...
    <field id="XMLExample.field.name" n="name" type="text"
	required="yes">
      <params size="16" maxlength="32" />
       <help>Some help text with <i18n>localized
	content</i18n>.</help>
    </field>
    ...
</p>

...

  • rend: (required) A required attribute used to specify the exact type of emphasis to apply to the contained text. Common values include but are not limited to "bold", "italic", "underline", and "emph". This will resolve to a span of the class name provided in the rend attribute.
Code Block

<p>
    This text is normal, while  <hi rend="bold">this text is bold and
	this text is <hi rend="italic">bold and
	italic.</hi></hi>
< <hi rend="glyphicon glyphicon-sunglasses"> </hi> in any theme (such as Mirage2) 
    which utilizes Twitter Bootstrap, will result in a "sunglasses" icon.
 </p>

instance

Structural Element

...

  • None listed yet.
Code Block

Example needed.

item

Rich Text Container

...

  • id: (optional) A unique identifier of the element
  • n: (optional) A non-unique local identifier used to differentiate the element from its siblings
  • rend: (optional) A rendering hint used to override the default display of the element.
Code Block

<list n="list-example"
	id="XMLExample.list.list-example">
  <head> Example List </head>
   <item> This is the first item
	</item> <item> This is the second item with <hi ...>highlighted text</hi>,
	<xref ...> a link</xref> and an <figure
	...>image</figure>.</item>
  ...
  <list n="list-example2"
	id="XMLExample.list.list-example2">
    <head> Example List </head>
    <label>ITEM ONE:</label>
     <item> This is the first item
	</item>
    <label>ITEM TWO:</label>
     <item> This is the second item with <hi ...>highlighted
	text</hi>, <xref ...> a link</xref> and an <figure
	...>image</figure>.</item>
    <label>ITEM THREE:</label>
     <item> This is the third item with a <field ...> ... </field>
	</item>
    ...
  </list>
   <item> This is the third item in the list
	</item>
  ...
</list>

...

  • id: (optional) A unique identifier of the element
  • n: (optional) A local identifier used to differentiate the element from its siblings
  • rend: (optional) An optional rend attribute provides a hint on how the label should be rendered, independent of its type.
Code Block

<list n="list-example"
	id="XMLExample.list.list-example">
  <head>Example List</head>
   <label>1</label>
  <item> This is the first item  </item>
   <label>2</label>
  <item> This is the second item with <hi ...>highlighted text</hi>,
	<xref ...> a link</xref> and an <figure
	...>image</figure>.</item>
  ...
  <list n="list-example2"
	id="XMLExample.list.list-example2">
    <head>Example Sublist</head>
     <label>ITEM
	ONE:</label>
    <item> This is the first item  </item>
     <label>ITEM
	TWO:</label>
    <item> This is the second item with <hi ...>highlighted
	text</hi>, <xref ...> a link</xref> and an <figure
	...>image</figure>.</item>
     <label>ITEM
	THREE:</label>
    <item> This is the third item with a <field ...> ... </field>
	</item>
    ...
  </list>
  <item> This is the third item in the list </item>
  ...
</list>

...

  • id: (required) A unique identifier of the element
  • n: (required) A local identifier used to differentiate the element from its siblings
  • rend: (optional) An optional rend attribute provides a hint on how the list should be rendered, independent of its type. Common values are but not limited to:
    • alphabet: The list should be rendered as an alphabetical index
    • columns: The list should be rendered in equal length columns as determined by the theme.
    • columns2: The list should be rendered in two equal columns.
    • columns3: The list should be rendered in three equal columns.
    • horizontal: The list should be rendered horizontally.
    • numeric: The list should be rendered as a numeric index.
    • vertical: The list should be rendered vertically.
  • type: (optional) An optional attribute to explicitly specify the type of list. In the absence of this attribute, the type of a list will be inferred from the presence and content of labels on its items. Accepted values are:
    • form: Used for form lists that consist of a series of fields.
    • bulleted: Used for lists with bullet-marked items.
    • gloss: Used for lists consisting of a set of technical terms, each marked with a label element and accompanied by the definition marked as an item element.
    • ordered: Used for lists with numbered or lettered items.
    • progress: Used for lists consisting of a set of steps currently being performed to accomplish a task. For this type to apply, each item in the list should represent a step and be accompanied by a label that contains the displayable name for the step. The item contains an xref that references the step. Also the rend attribute on the item element should be: "available" (meaning the user may jump to the step using the provided xref), "unavailable" (the user has not meet the requirements to jump to the step), or "current" (the user is currently on the step)
    • simple: Used for lists with items not marked with numbers or bullets.
Code Block

<div ...>
  ...
   <list n="list-example"
	id="XMLExample.list.list-example">
    <head>Example List</head>
    <item> ... </item>
    <item> ... </item>
    ...
     <list n="list-example2"
	id="XMLExample.list.list-example2">
      <head>Example Sublist</head>
      <label> ... </label>
      <item> ... </item>
      <label> ... </label>
      <item> ... </item>
      <label> ... </label>
      <item> ... </item>
      ...
     </list>
    <label> ... </label>
    <item> ... </item>
    ...
   </list>
</div>

...

  • userMeta (one)
  • pageMeta (one)
  • repositoryMeta (one)

Attributes

  • None
Code Block

<document version=1.0>
   <meta>
    <userMeta> ... </userMeta>
    <pageMeta> ... </pageMeta>
    <repositoryMeta> ... </repositoryMeta>
   </meta>
  <body> ... </body>
  <options> ... </options>
</document>

...

  • element: (required) The name of a metadata field.
  • language: (optional) An optional attribute to specify the language used in the metadata tag.
  • qualifier: (optional) An optional postfix to the field name used to further differentiate the names.
Code Block

<meta>
  <userMeta>
     <metadata element="identifier" qualifier="firstName"> Bob
	</metadata> <metadata element="identifier" qualifier="lastName"> Jones
	</metadata> <metadata ...> ...
	</metadata>
    ...
  </userMeta>
  <pageMeta>
     <metadata element="rights"
	qualifier="accessRights">user</metadata> <metadata ...> ...
	</metadata>
    ...
  </pageMeta>
</meta>

...

  • list (any)

Attributes

  • None
Code Block

<document version=1.0>

    <meta> ... </meta>

    <body> ... </body>

    <options>

        <list n="navigation-example1"
	id="XMLExample.list.navigation-example1">

            <head>Example Navigation List 1</head>

            <item><xref target="/link/to/option">Option
	One</xref></item>

            <item><xref target="/link/to/option">Option
	two</xref></item>

                ...

        </list>

        <list n="navigation-example2"
	id="XMLExample.list.navigation-example2">

            <head>Example Navigation List 2</head>

            <item><xref target="/link/to/option">Option
	One</xref></item>

            <item><xref target="/link/to/option">Option
	two</xref></item>

            ...

        </list>

        ...

    </options>

</document>

...

  • id: (optional) A unique identifier of the element.
  • n: (optional) A local identifier used to differentiate the element from its siblings.
  • rend: (optional) A rendering hint used to override the default display of the element.
Code Block

<div n="division-example"
	id="XMLExample.div.division-example">

     <p> This is a regular paragraph.
	</p> <p> This text is normal, while <hi rend="bold">this text is bold
	and this text is <hi rend="italic">bold and italic.</hi></hi>
	</p> <p> This paragraph contains a <xref
	target="/link/target">link</xref>, a static <figure
	source="/image.jpg">image</figure>, and a <figure target=
	"/link/target" source="/image.jpg">image link.</figure>
	</p>

</div>

...

  • metadata (any)
  • trail (any)

Attributes

  • None
Code Block

<meta>

    <userMeta> ... </userMeta>

     <pageMeta>

        <metadata element="title">Example DRI
	page</metadata>

        <metadata
	element="contextPath">/xmlui/</metadata>

        <metadata ...> ... </metadata>

        ...

        <trail source="123456789/6"> A bread crumb item
	</trail>

        <trail ...> ... </trail>

        ...

     </pageMeta>

</meta>

...

  • cols: (optional) The default number of columns that the text area should span. This applies only to textarea field types.
  • maxlength: (optional) The maximum length that the theme should accept for form input. This applies to text and password field types.
  • multiple: (optional) yes/no value. Determine if the field can accept multiple values for the field. This applies only to select lists.
  • operations: (optional) The possible operations that may be preformed on this field. The possible values are "add" and/or "delete". If both operations are possible then they should be provided as a space separated list. The "add" operations indicates that there may be multiple values for this field and the user may add to the set one at a time. The front-end should render a button that enables the user to add more fields to the set. The button must be named the field name appended with the string "_add", thus if the field's name is "firstName" the button must be called "firstName_add".The "delete" operation indicates that there may be multiple values for this field each of which may be removed from the set. The front-end should render a checkbox by each field value, except for the first, The checkbox must be named the field name appended with the string "_selected", thus if the field's name is "firstName" the checkbox must be called "firstName_selected" and the value of each successive checkbox should be the field name. The front-end must also render a delete button. The delete button name must be the field's name appended with the string "_delete".
  • rows: (optional) The default number of rows that the text area should span. This applies only to textarea field types.
  • size: (optional) The default size for a field. This applies to text, password, and select field types.
Code Block

<p>

    <field id="XMLExample.field.name" n="name" type="text"
	required="yes">

         <params size="16"
	maxlength="32"/>

        <help>Some help text with <i18n>localized
	content</i18n>.</help>

        <default>Default value goes here</default>

    </field>

</p>

...

  • url: (required) A url to the external metadata file.
  • repositoryIdentifier: (required) A reference to the repositoryIdentifier of the repository.
  • type: (optional) Description of the reference object's type.
Code Block

            <includeSet n="browse-list"
	id="XMLTest.includeSet.browse-list">
             <reference url="/metadata/handle/123/4/mets.xml"
	repositoryID="123" type="DSpace
	Item"/> <reference url="/metadata/handle/123/5/mets.xml"
	repositoryID="123" />
            ...
            </includeSet>

...

  • id: (required) A unique identifier of the element
  • n: (required) Local identifier used to differentiate the element from its siblings
  • orderBy: (optional) A reference to the metadata field that determines the ordering of artifacts or repository objects within the set. When the Dublin Core metadata scheme is used this attribute should be the element.qualifier value that the set is sorted by. As an example, for a browse by title list, the value should be sortedBy=title, while for browse by date list it should be sortedBy=date.created
  • rend: (optional) A rendering hint used to override the default display of the element.
  • type: (required) Determines the level of detail for the given metadata. Accepted values are:
    • summaryList: Indicates that the metadata from referenced artifacts or repository objects should be used to build a list representation that is suitable for quick scanning.
    • summaryView: Indicates that the metadata from referenced artifacts or repository objects should be used to build a partial view of the referenced object or objects.
    • detailList: Indicates that the metadata from referenced artifacts or repository objects should be used to build a list representation that provides a complete, or near complete, view of the referenced objects. Whether such a view is possible or different from summaryView depends largely on the repository at hand and the implementing theme.
    • detailView: Indicates that the metadata from referenced artifacts or repository objects should be used to display complete information about the referenced object. Rendering of several references included under this type is up to the theme.
Code Block

            <div ...>
            <head> Example Division </head>
            <p> ... </p>
            <table> ... </table>
            <list>
            ...
            </list>
             <referenceSet n="browse-list"
	id="XMLTest.referenceSet.browse-list" type="summaryView"
	informationModel="DSpace">
            <head>A header for the includeset</head>
            <reference
	url="/metadata/handle/123/34/mets.xml"/>
            <reference
	url=""metadata/handle/123/34/mets.xml/>
             </referenceSet>
            ...
            </p>

...

  • repositoryID: requiredA unique identifier assigned to a repository. It is referenced by the object element to signify the repository that assigned its identifier.
  • url: requiredA url to the external METS metadata file for the repository.
Code Block

<repositoryMeta>

     <repository repositoryID="123456789"
	url="/metadata/handle/1234/4/mets.xml" />

</repositoryMeta>

...

  • repository (any)

Attributes

  • None
Code Block

<meta>

  <userMeta> ... </usermeta>

  <pageMeta> ... </pageMeta>

     <repositoryMeta>

        <repository repositoryIID="..." url="..."
	/>

     </repositoryMeta>

</meta>

...

  • id: (optional) A unique identifier of the element
  • n: (optional) A local identifier used to differentiate the element from its siblings
  • rend: (optional) A rendering hint used to override the default display of the element.
  • role: (required) Indicates what kind of information the row carries. Possible values include "header" and "data".
Code Block

<table n="table-example" id="XMLExample.table.table-example" rows="2"
	cols="3">

     <row
	role="head">

      <cell cols="2">Data Label One and
	Two</cell>

        <cell>Data Label Three</cell>

        ...

     </row> <row>

      <cell> Value One </cell>

      <cell> Value Two </cell>

      <cell> Value Three </cell>

      ...

     </row>

    ...

</table>

...

  • cols: (required) The number of columns in the table.
  • id: (required) A unique identifier of the element
  • n: (required) A local identifier used to differentiate the element from its siblings
  • rend: (optional) A rendering hint used to override the default display of the element.
  • rows: (required) The number of rows in the table.
Code Block

<div n="division-example"
	id="XMLExample.div.division-example">

     <table n="table1" id="XMLExample.table.table1" rows="2"
	cols="3">

        <row role="head">

          <cell cols="2">Data Label One and
	Two</cell>

            <cell>Data Label Three</cell>

            ...

        </row>

        <row>

          <cell> Value One </cell>

          <cell> Value Two </cell>

          <cell> Value Three </cell>

          ...

        </row>

        ...

     </table>
    ...
</div>

...

  • rend: (optional) A rendering hint used to override the default display of the element.
  • target: (optional) An optional attribute to specify a target URL for a trail element serving as a hyperlink. The text inside the element will be used as the text of the link.
Code Block

<pageMeta>

    <metadata element="title">Example DRI
	page</metadata>

    <metadata
	element="contextPath">/xmlui/</metadata>

    <metadata ...> ... </metadata>

    ...

     <trail target="/myDSpace"> A bread crumb item pointing to a
	page. </trail> <trail ...> ... </trail>

    ...

</pageMeta>

...

  • authenticated: (required) Accepted values are "yes", "no". Determines whether the user has been authenticated by the system.
Code Block

<meta>

     <userMeta>

        <metadata element="identifier" qualifier="email">bobJones@tamu.edu</metadata>

        <metadata element="identifier" qualifier="firstName">Bob</metadata>

        <metadata element="identifier" qualifier="lastName">Jones</metadata>

        <metadata element="rights" qualifier="accessRights">user</metadata>

        <metadata ...> ... </metadata>

        ...

        <trail source="123456789/6">A bread crumb item</trail>

        <trail ...> ... </trail>

        ...

     </userMeta>

    <pageMeta> ... </pageMeta>

</meta>

...

  • optionSelected: (optional) An optional attribute for select, checkbox, and radio fields to determine if the value is to be selected or not.
  • optionValue: (optional) An optional attribute for select, checkbox, and radio fields to determine the value that should be returned when this value is selected.
  • type: (required) A required attribute to specify the type of value. Accepted types are:
    • raw: The raw type stores the unprocessed value directly from the user of other source.
    • interpreted: The interpreted type stores the value in a format appropriate for display to the user, possibly including rich text markup.
    • default: The default type stores a value supplied by the system, used when no other values are provided.
Code Block

<p>
  <hi> ... </hi>
  <xref> ... </xref>
  <figure> ... </figure>
  <field id="XMLExample.field.name" n="name" type="text"
	required="yes">
    <params size="16" maxlength="32"/>
    <help>Some help text with <i18n>localized
	content</i18n>.</help>
     <value type="default">Author,
	John</value>
  </field>
</p>

...

  • target: (required) A target for the reference, using either a URL or an id of an existing element as a destination for the xref.
Code Block

<p>
     <xref target="/url/link/target">This text is shown as a link.</xref>
</p>