LISTSERV mailing list manager LISTSERV 16.0

Help for MODS Archives


MODS Archives

MODS Archives


MODS@LISTSERV.LOC.GOV


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Monospaced Font

LISTSERV Archives

LISTSERV Archives

MODS Home

MODS Home

MODS  January 2004

MODS January 2004

Subject:

Re: name parsing and xslt 2

From:

Andrew E Switala <[log in to unmask]>

Reply-To:

Metadata Object Description Schema List <[log in to unmask]>

Date:

Mon, 5 Jan 2004 06:38:54 -0500

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (72 lines)

Sorry to take so long; I got the message (forwarded) on the 26th, but
didn't have access to the subscribed e-mail account until now. Here's
the approach I use:

<xsl:key name="mods.id" match="mods:mods" use="concat('#',@ID)"/>
<xsl:template match="mods:name">
   <xsl:choose>
      <xsl:when test="mods:namePart">
         <xsl:apply-templates select="mods:namePart"/>
      </xsl:when>
      <xsl:when test="@xlink:href">
         <xsl:apply-templates select="key(@xlink:href)/mods:name"/>
      </xsl:when>
   </xsl:choose>
</xsl:template>

Information local to the current node is given priority, then linked
name records are searched recursively. The key assumes all name records
are in the document being transformed as in the earlier example. If
they're located elsewhere, you can still do it with a vanilla XSLT
processor:
...
      <xsl:when test="@xlink:href">
         <xsl:variable name="idref"
select="substring-after(@xlink:href,'#')"/>
         <xsl:apply-templates
select="document(substring-before(@xlink:href,'#'))//mods:mods[@ID=$idref]/mods:name"/>
      </xsl:when>
...

--Andy

>>> [log in to unmask] 2003-12-26 18:40:42 >>>
Andy,

In your xlink example below, how would you handle this in XSLT? Say
you
want to create HTML output that correctly pulls in the linked name
information. Should an XSLT processor automatically handle this
without
specific coding for it?

Bruce

On Mon, 22 Dec 2003 14:58:20 -0500, "Andrew E Switala"
<[log in to unmask]> said:

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

Top of Message | Previous Page | Permalink

Advanced Options