On 10/9/07, Shane Beers <[EMAIL PROTECTED]> wrote:

> I'd love to just be able to say "show me these fields, but don't put in
> wacky extra spaces and dashes if the field doesn't have data (or doesn't
> exist) in that item."

My suspicion is that in JSP you're stuck. I ran head-on into the same
problem for the same reason (dissertation advisors erroneously showing
up as authors), and I didn't find a non-major-hacking fix. I thought
at first that it might be possible to do a comma-separated list of
values for webui.itemlist.columns, but after I broke DSpace by trying
it, I learned the error of my ways.

If you can stand it for a few more months, though, I *think* this is
fixable in Manakin. WARNING: I HAVE NOT TESTED ANY OF THIS CODE YET.
(Subversion issues on the new server. They're supposed to be fixed
now.) Adopt or adapt it at your own risk.

Speaking in meta-pseudocode, Manakin's default author listing on the
item page (search DS-METS-1.0-DIM.xsl for "item-author" to find the
code) does roughly the same thing that JSP does. If there's a
dc.contributor.author, put them first. If there's a dc.creator, put
them. Then add any other dc.contributors regardless of qualifier.

I commented out the final xsl:when (dc.contributor.*, in dspace.cfg
parlance) and added some more table rows to cover my edge-case
contributors (I have translators and advisors; you may have others).
To address the blank-metadata problem, I've been wrapping rows in
<xsl:if> clauses (in meta-pseudocode, "if this piece of metadata
exists, write the row" with its implied "if not, don't"), a technique
I commend to the Manakin developers, because the empty rows look like
a system error, take up screen space unnecessarily, and confuse users.

So each of my new rows looks like this. Be warned; I haven't put keys
in messages.xml yet, but that would be the proper way to do this.

<xsl:if test="$data/dim:[EMAIL PROTECTED]'contributor'[EMAIL 
PROTECTED]'advisor']">
                <tr><td><span
class="bold"><xsl:text>Advisor(s):</xsl:text></span></td>
                <td>
                            <xsl:for-each
select="$data/dim:[EMAIL PROTECTED]'contributor'[EMAIL PROTECTED]'advisor']">
                                <xsl:copy-of select="."/>
                                <xsl:if
test="count(following-sibling::dim:[EMAIL PROTECTED]'contributor'[EMAIL 
PROTECTED]'advisor'])
!= 0">
                                    <xsl:text>; </xsl:text>
                                </xsl:if>
                            </xsl:for-each>
                </td></tr>
</xsl:if>

As for the browse pages, I think my decision for the time being is
going to be to limit the author field to dc.creator and
dc.contributor.author. Should be fairly easy to do with the techniques
I just outlined.

Dorothea

-- 
Dorothea Salo                [EMAIL PROTECTED]
Digital Repository Librarian      AIM: mindsatuw
University of Wisconsin
Rm 218, Memorial Library
(608) 262-5493

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
DSpace-tech mailing list
DSpace-tech@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dspace-tech

Reply via email to