A question: How does <displayForm> fit into this?  In the
<modsCollection> I've been compiling, each person or organization has a
record, which each work references, and the name as it appears in
<displayForm>, as in the fictional example:

      <title>Names are a pain in the butt</title>
   <name xlink:href="#name.Robert.Smith">
      <role><roleTerm type="code">aut</roleTerm></role>
      <displayForm>Bob Smith</displayForm>
<!-- Somewhere else in the file: -->
<mods ID="name.Robert.Smith">
   <name type="personal">
      <namePart type="family">Smith</namePart>
      <namePart type="given">Robert</namePart>
   <note type="biographical">...</note>
   <!-- and so forth -->

The MODS record with ID="name.Robert.Smith" would have the full <name>
data and any biographical notes.
Apparently a transformation would map the <name> element of the
#name.Robert.Smith record into 100$a, and put Bob Smith in 245$c.  Is
this wrong, then; should my MODS database be restructured so Bob Smith
goes in <namePart> instead of <displayForm>?  (A simple enough task with
XSLT, but I wanted a librarian's opinion.)

>>> [log in to unmask] 2003-12-20 12:55:49 >>>
You'll find it at:

There are plenty of examples that cover all kinds of common and

The one thing that might need clarification is the $q, as in:
  100 1#$aGresham, G. A.$q(Geoffrey Austin)

The $q is part of the library cataloging rules and expands from the
an author's name appears on a title page to the full name. I don't
that any appliations other than library catalogs will carry the
information that is in the $q so everyone else can probably ignore it.


On Sat, 2003-12-20 at 08:39, Bruce D'Arcus wrote:
> Since I'm big on parsing out data where possible, and MARC/MARCXML
> not parses names, I came up with the following XSLT 2 stylesheet to
> this.  Currently it will only handle a name of the form "Family,
> Given."  Can someone give some more info on how coding of names is
> handled in MARC?  For example, what about terms of address, things
> Jr, II, etc.?
> <xsl:stylesheet version="1.0"
> xmlns:xsl="">
> <xsl:strip-space elements="*"/>
> <xsl:output method="xml" indent="yes"/>
> <xsl:template match="name">
>    <xsl:choose>
>      <xsl:when test="@type='personal'">
>        <name type="personal">
>         <xsl:apply-templates/>
>        </name>
>      </xsl:when>
>      <xsl:when test="@type='corporate'">
>        <name type="corporate">
>         <xsl:apply-templates/>
>        </name>
>      </xsl:when>
>      <xsl:when test="@type='conference'">
>        <name type="conference">
>         <xsl:apply-templates/>
>        </name>
>      </xsl:when>
>      <xsl:otherwise>
>        <name>
>         <xsl:apply-templates/>
>        </name>
>      </xsl:otherwise>
>    </xsl:choose>
> </xsl:template>
> <xsl:template match="namePart">
>    <xsl:variable name="elValue" select="."/>
>    <xsl:analyze-string select="$elValue"
>      <xsl:matching-substring>
>        <namePart type="given"><xsl:value-of
> select="regex-group(2)"/></namePart>
>        <namePart type="family"><xsl:value-of
> select="regex-group(1)"/></namePart>
>      </xsl:matching-substring>
>      <xsl:non-matching-substring>
>        <namePart>
>         <xsl:value-of select="$elValue"/>
>        </namePart>
>      </xsl:non-matching-substring>
>    </xsl:analyze-string>
> </xsl:template>
> </xsl:stylesheet>
Karen Coyle
Digital Library Specialist
Ph: 510-540-7596 Fax: 510-848-3913