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 > > > > >> > > > > > >> > > > > > > > > > > > > > > > > > > > >