From 099a0eb0a6c6f4cab200f01d48eb6ae8ad1f477a Mon Sep 17 00:00:00 2001
From: Demian Katz <demian.katz@villanova.edu>
Date: Mon, 9 May 2016 10:59:06 -0400
Subject: [PATCH] Improved author indexing - Added missing author_sort values
 to XSLT indexing. - Added DC:contributor support to VuDL indexing.

---
 import/xsl/doaj.xsl       |  6 ++++++
 import/xsl/dspace.xsl     |  6 ++++++
 import/xsl/gsdl.xsl       |  6 ++++++
 import/xsl/ndltd.xsl      |  6 ++++++
 import/xsl/nlm_ojs.xsl    | 12 +++++++++---
 import/xsl/ojs.xsl        |  6 ++++++
 import/xsl/vudl_FOXML.xsl | 16 ++++++++++++++++
 7 files changed, 55 insertions(+), 3 deletions(-)

diff --git a/import/xsl/doaj.xsl b/import/xsl/doaj.xsl
index a77177fde69..611bf64f45a 100644
--- a/import/xsl/doaj.xsl
+++ b/import/xsl/doaj.xsl
@@ -68,6 +68,12 @@
                             <field name="author">
                                 <xsl:value-of select="normalize-space()"/>
                             </field>
+                            <!-- use first author value for sorting -->
+                            <xsl:if test="position()=1">
+                                <field name="author_sort">
+                                    <xsl:value-of select="normalize-space()"/>
+                                </field>
+                            </xsl:if>
                         </xsl:if>
                     </xsl:for-each>
                 </xsl:if>
diff --git a/import/xsl/dspace.xsl b/import/xsl/dspace.xsl
index 6dcbd734b2e..81ff3284850 100644
--- a/import/xsl/dspace.xsl
+++ b/import/xsl/dspace.xsl
@@ -100,6 +100,12 @@
                             <field name="author">
                                 <xsl:value-of select="normalize-space()"/>
                             </field>
+                            <!-- use first author value for sorting -->
+                            <xsl:if test="position()=1">
+                                <field name="author_sort">
+                                    <xsl:value-of select="normalize-space()"/>
+                                </field>
+                            </xsl:if>
                         </xsl:if>
                     </xsl:for-each>
                 </xsl:if>
diff --git a/import/xsl/gsdl.xsl b/import/xsl/gsdl.xsl
index 33f231fe91e..497532680d1 100644
--- a/import/xsl/gsdl.xsl
+++ b/import/xsl/gsdl.xsl
@@ -84,6 +84,12 @@
                             <field name="author">
                                 <xsl:value-of select="normalize-space()"/>
                             </field>
+                            <!-- use first author value for sorting -->
+                            <xsl:if test="position()=1">
+                                <field name="author_sort">
+                                    <xsl:value-of select="normalize-space()"/>
+                                </field>
+                            </xsl:if>
                         </xsl:if>
                     </xsl:for-each>
                 </xsl:if>
diff --git a/import/xsl/ndltd.xsl b/import/xsl/ndltd.xsl
index fbffa8938d8..00759d962ae 100644
--- a/import/xsl/ndltd.xsl
+++ b/import/xsl/ndltd.xsl
@@ -161,6 +161,12 @@
                             <field name="author">
                                 <xsl:value-of select="normalize-space()"/>
                             </field>
+                            <!-- use first author value for sorting -->
+                            <xsl:if test="position()=1">
+                                <field name="author_sort">
+                                    <xsl:value-of select="normalize-space()"/>
+                                </field>
+                            </xsl:if>
                         </xsl:if>
                     </xsl:for-each>
                 </xsl:if>
diff --git a/import/xsl/nlm_ojs.xsl b/import/xsl/nlm_ojs.xsl
index 2f2e130ee20..a535a03b312 100644
--- a/import/xsl/nlm_ojs.xsl
+++ b/import/xsl/nlm_ojs.xsl
@@ -134,11 +134,17 @@
 
                 <!-- AUTHOR -->
                 <xsl:for-each select="//nlm:contrib[@contrib-type='author']/nlm:name">
-                        <xsl:if test="normalize-space()">
-                            <field name="author">
-                                <xsl:value-of select="nlm:surname[normalize-space()]" />, <xsl:value-of select="nlm:given-names[normalize-space()]" />
+                    <xsl:if test="normalize-space()">
+                        <field name="author">
+                            <xsl:value-of select="nlm:surname[normalize-space()]" />, <xsl:value-of select="nlm:given-names[normalize-space()]" />
+                        </field>
+                        <!-- use first author value for sorting -->
+                        <xsl:if test="position()=1">
+                            <field name="author_sort">
+                                <xsl:value-of select="normalize-space()"/>
                             </field>
                         </xsl:if>
+                    </xsl:if>
                 </xsl:for-each>
 
                 <!-- TITLE -->
diff --git a/import/xsl/ojs.xsl b/import/xsl/ojs.xsl
index 3d8a138b349..b9cf6eaa5e3 100644
--- a/import/xsl/ojs.xsl
+++ b/import/xsl/ojs.xsl
@@ -62,6 +62,12 @@
                             <field name="author">
                                 <xsl:value-of select="normalize-space()"/>
                             </field>
+                            <!-- use first author value for sorting -->
+                            <xsl:if test="position()=1">
+                                <field name="author_sort">
+                                    <xsl:value-of select="normalize-space()"/>
+                                </field>
+                            </xsl:if>
                         </xsl:if>
                     </xsl:for-each>
                 </xsl:if>
diff --git a/import/xsl/vudl_FOXML.xsl b/import/xsl/vudl_FOXML.xsl
index b8684694570..9f6434b0f69 100644
--- a/import/xsl/vudl_FOXML.xsl
+++ b/import/xsl/vudl_FOXML.xsl
@@ -389,6 +389,22 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
                             <field name="author">
                                 <xsl:value-of select="normalize-space()"/>
                             </field>
+                            <!-- use first author value for sorting -->
+                            <xsl:if test="position()=1">
+                                <field name="author_sort">
+                                    <xsl:value-of select="normalize-space()"/>
+                                </field>
+                            </xsl:if>
+                        </xsl:if>
+                    </xsl:for-each>
+                </xsl:if>
+
+                <xsl:if test="$DC//dc:contributor">
+                    <xsl:for-each select="$DC//dc:contributor">
+                        <xsl:if test="normalize-space()">
+                            <field name="author2">
+                                <xsl:value-of select="normalize-space()"/>
+                            </field>
                         </xsl:if>
                     </xsl:for-each>
                 </xsl:if>
-- 
GitLab