Dspace 6.3 Problem with type-bind feature

53 views
Skip to first unread message

Agustín Alfieri

unread,
May 12, 2022, 11:14:30 AM5/12/22
to DSpace Technical Support
Hi, I need to use the type-bind feature to request my users to complete specific metadata for each document type. Since i want to be able to have different types of documents in the same collection, this is the solution that works best for me.

The configuration i've tried is like this:
The user is in a collection and starts a submission, when they arrive to the Description Step the first page of the input form asks them to select the document type. Then, in the second page of the input form, they are shown only the metadata that applies to that specific document type.
I've tried to achieve this by modifying the input-forms.xml file to have the following lines:

 <form-definitions>

   <form name="traditional">
     <page number="1">
      <field>
         <dc-schema>dc</dc-schema>
         <dc-element>type</dc-element>
         <dc-qualifier></dc-qualifier>
         <repeatable>false</repeatable>
         <label>File type</label>
         <input-type value-pairs-name="common_types">dropdown</input-type>
         <hint>File type</hint>
         <required></required>
       </field>
     </page>

!<-- And then, for example, a metadata only available for the "thesis" type -->

     <page number="2">
      <field>
        <dc-schema>dc</dc-schema>
        <dc-element>contributor</dc-element>
        <dc-qualifier></dc-qualifier>
        <repeatable>true</repeatable>
        <label>Thesis director</label>
        <input-type>name</input-type>
        <hint></hint>
        <required></required>
        <type-bind>Thesis</type-bind>
      </field>
     </page>

------------------------------------------------------------------------

This works but the problem is that when the user reloads the second page or it's done automatically (for example, when clicking the "add" button) the page becomes blank. I believe this is because Dspace fails to remember the Doc Type and so no type-bind metadata is shown.

Failed solution:
I've tried to fix this by having the type metadata and the rest of the metadata in the same page. But in this case if the user doesn't mannually reloads the page, the type-bind metadata is not shown. Also, it gives the user the ability to fill the metadata specific to a thesis for example and then change the Doc type.

What can I do to fix this? Is there a better solution to my problem?

euler

unread,
May 12, 2022, 10:05:41 PM5/12/22
to DSpace Technical Support
Hi,

I've encountered this also. Make sure that all the metadata fields in your input-forms.xml actually exist in the metadata registry. In your example, by default, there is a dc.contributor field in the metadata registry but perhaps other metadata fields in your input forms are not yet defined in the metadata registry hence the error when a submitter tried to continue on the next page.

Hope this helps. Regard,
euler

Agustín Alfieri

unread,
May 13, 2022, 11:02:44 AM5/13/22
to DSpace Technical Support
Hi,

I've checked the metadata and it's loaded properly. Maybe I wasn't clear, but the metadata appears just fine in after you select the document type and click next. So I believe that the metadata fields are not the issue. 
The problem appears when the second page (the one with the specific metadata values for that doc type) is refreshed, whether it's done manually by the user or automatically by the system when for example an "add" button is clicked.

Thanks for answering, 
Agustín

euler

unread,
May 13, 2022, 7:09:08 PM5/13/22
to DSpace Technical Support
Hi Agustin,

What I'm trying to say is you have to make sure the custom metadata field or any metadata fields you included in your input form should exist first in the metadata registry. For example, in one of the repositories that I'm working on, the submitter is required to provide the thesis degree name, level, discipline, adviser, committee chair, and committee member(s) when he/she chose the "Thesis" type. So in my input-forms.xml, I have this configuration:

       <field>
         <dc-schema>dc</dc-schema>
         <dc-element>contributor</dc-element>
         <dc-qualifier>chair</dc-qualifier>
         <repeatable>true</repeatable>
         <label>Committee chair</label>
         <type-bind>Thesis,Dissertation</type-bind>

         <input-type>name</input-type>
         <hint></hint>
       </field>


       <field>
         <dc-schema>dc</dc-schema>
         <dc-element>contributor</dc-element>
         <dc-qualifier>committeemember</dc-qualifier>
         <repeatable>true</repeatable>
         <label>Committee member</label>
         <type-bind>Thesis,Dissertation</type-bind>

         <input-type>name</input-type>
         <hint></hint>
       </field>

       <field>
         <dc-schema>thesis</dc-schema>
         <dc-element>degree</dc-element>
         <dc-qualifier>name</dc-qualifier>
         <label>Degree</label>
         <type-bind>Thesis,Dissertation</type-bind>
         <input-type>onebox</input-type>
         <hint>Name of the degree associated with the work as it appears within the work. (example: Masters of Arts in Education)</hint>
         <required>You must enter the Degree's name.</required>
       </field>

       <field>
         <dc-schema>thesis</dc-schema>
         <dc-element>degree</dc-element>
         <dc-qualifier>level</dc-qualifier>
         <repeatable>false</repeatable>
         <label>Level</label>
         <type-bind>Thesis,Dissertation</type-bind>
         <input-type>onebox</input-type>
         <hint>Level of education associated with the document. (e.g., Undergraduate, Masters, Doctoral, Postdoctoral)</hint>
         <required>You must enter the Degree level for this item</required>
       </field>

       <field>
         <dc-schema>thesis</dc-schema>
         <dc-element>degree</dc-element>
         <dc-qualifier>discipline</dc-qualifier>
         <repeatable>false</repeatable>
         <label>Discipline</label>
         <type-bind>Thesis,Dissertation</type-bind>
         <input-type>onebox</input-type>
         <hint>Area of study of the intellectual content of the document. Usually, this will be the name of a program or department.</hint>
         <required>You must enter the Degree discipline for this item</required>        
       </field>

       <field>
         <dc-schema>thesis</dc-schema>
         <dc-element>degree</dc-element>
         <dc-qualifier>grantor</dc-qualifier>
         <repeatable>true</repeatable>
         <label>Degree Grantor</label>
         <type-bind>Thesis,Dissertation</type-bind>
         <input-type>onebox</input-type>
         <hint>Institution granting the degree associated with the work.</hint>
         <required>You must enter the Degree grantor for this item</required>        
       </field>

Notice that I have custom metadata fields not included by default in the metadata registry especially those with the "thesis" schema. So I have to create the thesis schema first:

schema.PNG

and then 'register' these fields:
thesis-schema.PNG
For other metadata fields such as dc.contributor.chair and dc.contributor. committeemember, I just added them in the 'dc' schema. So when a submitter chose the type 'Thesis', in the next page, it will display these fields specific only for the thesis type:
thesis-fields.PNG

The metadata registry can be found from this page: http://[your.repository.baseurl]/admin/metadata-registry. If any metadata fields were not found in the metadata registry, the system has no way where to put them after your user clicks the "Add" button or the "Next" button.

Hope this helps,
euler

Agustín Alfieri

unread,
May 16, 2022, 8:41:24 AM5/16/22
to DSpace Technical Support
Hi euler,

I was checking the entire xml file to see if my metadata registry was missing any metadata field and I realized that there where some syntax errors with the value-pairs. Once I solved them DSpace started working as expected.
Thanks a lot for your help and if someone needs me to clarify what I did, I'll do it.

Regards, 
Agustín.
Reply all
Reply to author
Forward
0 new messages