Regardless, I am impressed. Thanks, this gives me some ideas to chew over
and analyze.
On Fri, Jul 11, 2014 at 1:43 PM, Bridger Dyson-Smith <[log in to unmask]>
wrote:
> And just because I'm drinking too much coffee...
>
> If you're using an XSLT 2.0 processor for this you can do some things with
> variables that might make things a little easier; e.g.
>
> <xsl:variable name="vJournalTitle"
> select="normalize-space(dcvalue[@qualifier='name'])"/>
> <xsl:variable name="vJournalVol"
> select="normalize-space(dcvalue[@qualifier='volume'])"/>
> <xsl:variable name="vJournalIssue"
> select="normalize-space(dcvalue[@qualifier='issue'])"/>
>
> You can call those variables in a concat() function and you won't have to
> deal with wonky spacing in your output. There are almost certainly a bunch
> of much better ways to do this - I'll never be anything better than an XSLT
> apprentice - but it might be a good starting point.
>
> See the second <dc_identifier> for the difference in output.
> Cheers.
>
> --> cat sherman.xml
> <?xml version="1.0" encoding="UTF-8"?>
> <record>
> <dcvalue element="publication" qualifier="issue"
> language="">1</dcvalue>
> <dcvalue element="publication" qualifier="name" language="">Quarterly
> Review of Economics and Finance</dcvalue>
> <dcvalue element="publication" qualifier="volume"
> language="">47</dcvalue>
> </record>
>
> --> cat sherman.xsl
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:xs="http://www.w3.org/2001/XMLSchema"
> exclude-result-prefixes="xs"
> version="2.0">
> <xsl:output method="xml" indent="yes"/>
>
> <xsl:template match="record">
> <xsl:variable name="vJournalTitle"
> select="normalize-space(dcvalue[@qualifier='name'])"/>
> <xsl:variable name="vJournalVol"
> select="normalize-space(dcvalue[@qualifier='volume'])"/>
> <xsl:variable name="vJournalIssue"
> select="normalize-space(dcvalue[@qualifier='issue'])"/>
>
> <dc-identifier><xsl:value-of
> select="dcvalue[@qualifier='name']"/><xsl:text> Vol.
> </xsl:text><xsl:value-of select="dcvalue[@qualifier='volume']"/><xsl:text>
> Issue </xsl:text><xsl:value-of select="dcvalue[@qualifier='issue']"/>
> </dc-identifier>
>
> <dc_identifier>
> <xsl:value-of select="concat($vJournalTitle, ' Vol. ',
> $vJournalVol, ' Issue ', $vJournalIssue)"/>
> </dc_identifier>
> </xsl:template>
>
> --> saxon -s:./sherman.xml -xsl:./sherman.xsl
> <?xml version="1.0" encoding="UTF-8"?>
> <dc-identifier>Quarterly
> Review of Economics and Finance Vol. 47 Issue 1</dc-identifier>
> <dc_identifier>Quarterly Review of Economics and Finance Vol. 47 Issue
> 1</dc_identifier>
>
>
> On Fri, Jul 11, 2014 at 1:33 PM, Matthew Sherman <[log in to unmask]
> >
> wrote:
>
> > Thanks, that is very helpful.
> >
> >
> > On Fri, Jul 11, 2014 at 1:30 PM, Bridger Dyson-Smith <
> > [log in to unmask]>
> > wrote:
> >
> > > Hi Matthew,
> > >
> > > That looks good to me. The only thing I might suggest -- depending on
> > your
> > > needs -- is to add <xsl:text> around your literals; e.g.
> > >
> > > <xsl:value-of select="dcvalue[@qualifier='name']"/><xsl:text> Vol.
> > > </xsl:text><xsl:value-of
> > select="dcvalue[@qualifier='volume']"/><xsl:text>
> > > Issue </xsl:text><xsl:value-of select="dcvalue[@qualifier='issue']"/>
> > >
> > > If the processor you are using does something weird with white space,
> > > you'll avoid it by having the white space in text element. You may
> need a
> > > more precise XPath, depending on the context of your template, but the
> > > initial statement didn't look to bad.
> > >
> > > Hope that helps.
> > > Best,
> > > Bridger
> > >
> > >
> > > On Fri, Jul 11, 2014 at 11:24 AM, Matthew Sherman <
> > > [log in to unmask]>
> > > wrote:
> > >
> > > > Given the DSpace Dublin Core formatting I would like to be able to
> take
> > > > this:
> > > >
> > > > <dcvalue element="*publication*" qualifier="*issue*"
> > > > language="">1</dcvalue>
> > > > <dcvalue element="*publication*" qualifier="*name*"
> > > language="">Quarterly
> > > > Review of Economics and Finance</dcvalue>
> > > > <dcvalue element="*publication*" qualifier="*volume*" language="
> > > > ">47</dcvalue>
> > > >
> > > > And turn during a OAI harvest turn it into:
> > > >
> > > > <dc:identifier>Quarterly Review of Economics and
> > > > Finance Vol. 47 Issue 1</dc:identifier>
> > > >
> > > > I am thinking I can just add
> > > >
> > > > <dc:identifier><xsl:value-of select=""/> Vol. <xsl:value-of
> select=""/>
> > > > Issue <xsl:value-of select=""/></dc:identifier>
> > > >
> > > > in the identifier section of the cross walk, but I am not 100% sure.
> > > Also
> > > > I am not sure if I will need to use the excessively complex XPath to
> > > > reference my source values. Can anyone tell me if I am on the right
> > > track?
> > > >
> > > >
> > > > On Fri, Jul 11, 2014 at 11:13 AM, Matthew Sherman <
> > > > [log in to unmask]>
> > > > wrote:
> > > >
> > > > > Ok, that makes sense. While I knew of OAI-PMH this is my first
> time
> > > > > really getting my hands dirty with it so I wasn't sure if this
> > > > > exceptionally detailed formatting was a function of the OAI
> protocols
> > > or
> > > > a
> > > > > function of DSpace. I also extracted a metadata record from DSpace
> > to
> > > > see
> > > > > how they are formatting it and this I what I found for the type
> > field:
> > > > >
> > > > > <dcvalue element="type" qualifier="none"
> language="">Poster</dcvalue>
> > > > >
> > > > >
> > > > > On Fri, Jul 11, 2014 at 11:08 AM, Dunn, Katie <[log in to unmask]>
> > wrote:
> > > > >
> > > > >> Matt said: "I guess it is the "doc:element/doc:element/doc:field"
> > > thing
> > > > >> that is mostly what it throwing me."
> > > > >>
> > > > >> More DSpacey people than I can probably comment more knowledgeably
> > on
> > > > >> this, but this seems like less of an OAI-PMH thing than a DSpace
> > > thing.
> > > > It
> > > > >> looks like maybe DSpace stores metadata internally in a generic
> > > > >> metadata/element/field structure like Bridger showed (with doc
> > > > namespace):
> > > > >>
> > > > >> <doc:metadata>
> > > > >> <doc:element name="example"> <!-- ignored! -->
> > > > >> <doc:element name="dc">
> > > > >> <doc:element name="blahBlahBlah"> <!-- ignored! -->
> > > > >> <doc:element name="type">
> > > > >> <doc:element>
> > > > >> <doc:element>
> > > > >> <doc:field name="value"> <!-- get the value of
> > > this
> > > > >> element -->
> > > > >>
> > > > >> ...and the select is pulling the information it needs for the
> > <dc:type
> > > > />
> > > > >> element in the OAI-PMH output out of the internal DSpace
> structure.
> > > > >>
> > > > >> Katie
> > > > >>
> > > > >>
> > > > >> -----Original Message-----
> > > > >> From: Code for Libraries [mailto:[log in to unmask]] On
> > Behalf
> > > Of
> > > > >> Bridger Dyson-Smith
> > > > >> Sent: Friday, July 11, 2014 10:56 AM
> > > > >> To: [log in to unmask]
> > > > >> Subject: Re: [CODE4LIB] OAI Crosswalk XSLT
> > > > >>
> > > > >> Hi Matt,
> > > > >>
> > > > >> Michael Kays' XSLT 2.0 and XPath 2.0 is a great reference and is
> > > > >> available as an eBook. Mulberry Technologies has some quick
> > reference
> > > > >> guides [1] that might be helpful.
> > > > >>
> > > > >> Cheers,
> > > > >> Bridger
> > > > >>
> > > > >> <doc:metadata>
> > > > >> <doc:element name="example"> <!-- ignored! -->
> > > > >> <doc:element name="dc">
> > > > >> <doc:element name="blahBlahBlah"> <!-- ignored! -->
> > > > >> <doc:element name="type">
> > > > >> <doc:element>
> > > > >> <doc:element>
> > > > >> <doc:field name="value"> <!-- get the value of
> > > this
> > > > >> element -->
> > > > >>
> > > > >> [1] http://www.mulberrytech.com/quickref/
> > > > >>
> > > > >>
> > > > >>
> > > > >> On Fri, Jul 11, 2014 at 10:38 AM, Matthew Sherman <
> > > > >> [log in to unmask]>
> > > > >> wrote:
> > > > >>
> > > > >> > Hi Code4Lib folks,
> > > > >> >
> > > > >> > I have a question for those of you who have worked with OAI-PMH.
> > I
> > > am
> > > > >> > currently editing our DSpace OAI crosswalk to include a few
> custom
> > > > >> > metadata field that exist in our repository for publication
> > > > >> > information and port them into a more standard format. The
> > problem
> > > I
> > > > >> > am running into is the select statements they use are not the
> > > typical
> > > > >> > XPath statements I am used to. For example:
> > > > >> >
> > > > >> > <xsl:for-each
> > > > >> >
> > > > >> >
> > > select="doc:metadata/doc:element[@name='dc']/doc:element[@name='type']
> > > > >> > /doc:element/doc:element/doc:field[@name='value']">
> > > > >> > <dc:type><xsl:value-of select="." /></dc:type> </xsl:for-each>
> > > > >> >
> > > > >> > I know what the "." does, but the other select statement is a
> bit
> > > > >> > foreign to me. So my question is, does anyone know of some
> > > reference
> > > > >> > material that can help me make sense of this select? I need to
> > > > >> > understand what it is doing so I can make my own. Thanks for
> any
> > > > >> insight you can provide.
> > > > >> >
> > > > >> > Matt Sherman
> > > > >> >
> > > > >>
> > > > >
> > > > >
> > > >
> > >
> >
>
|