Last active
July 31, 2019 20:22
-
-
Save kschlottmann/48714de656dc48b3cfcf9122581f5549 to your computer and use it in GitHub Desktop.
XSL to generate pipe-delimited file with TBM information
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?xml version="1.0" encoding="UTF-8"?> | |
| <!-- IN PROGRESS, 2019-07-29 --> | |
| <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ead="urn:isbn:1-931666-22-9" exclude-result-prefixes="xs" version="2.0"> | |
| <xsl:output omit-xml-declaration="yes"/> | |
| <xsl:strip-space elements="*"/> | |
| <xsl:template match="ead:ead"> | |
| <xsl:apply-templates select="//ead:c[@level = 'file']"/> | |
| </xsl:template> | |
| <xsl:template match="ead:c[@level = 'file']"> | |
| <!-- set fixed variables --> | |
| <xsl:variable name="fa_url"> | |
| <xsl:value-of select="//ead:eadheader/ead:eadid/@url"/> | |
| </xsl:variable> | |
| <xsl:variable name="collection_name"> | |
| <xsl:value-of select="//ead:archdesc/ead:did/ead:unittitle"/> | |
| </xsl:variable> | |
| <xsl:variable name="bib_id"> | |
| <xsl:value-of select="//ead:archdesc/ead:did/ead:unitid[1]"/> | |
| </xsl:variable> | |
| <xsl:variable name="repo_code"> | |
| <xsl:value-of select="//ead:eadheader/ead:eadid/@mainagencycode"/> | |
| </xsl:variable> | |
| <xsl:variable name="rights"> | |
| <!-- DEFAULT onsite --> | |
| <xsl:text>In copyright</xsl:text> | |
| </xsl:variable> | |
| <xsl:variable name="restrictions"> | |
| <!-- DEFAULT TBD --> | |
| <xsl:text>Onsite access only</xsl:text> | |
| </xsl:variable> | |
| <xsl:variable name="creator"> | |
| <!-- DEFAULT from collection--> | |
| <xsl:value-of select="//ead:archdesc/ead:did/ead:origination"/> | |
| </xsl:variable> | |
| <xsl:variable name="language"> | |
| <xsl:value-of select="//ead:archdesc/ead:did/ead:langmaterial/ead:language"/> | |
| </xsl:variable> | |
| <!-- add pipe-separated table headers here once sheet is set--> | |
| <!-- includes test for dao, which indicates presence of previously digitized content --> | |
| <xsl:choose> | |
| <xsl:when test="ead:did/ead:dao"> | |
| <!-- dao indicator--> | |
| <xsl:text>PREVIOUSLY DIGITIZED</xsl:text> | |
| <xsl:text>|</xsl:text> | |
| <!--collection title--> | |
| <xsl:value-of select="$collection_name"/> | |
| <xsl:text>|</xsl:text> | |
| <!--bib ID--> | |
| <xsl:value-of select="$bib_id"/> | |
| <xsl:text>|</xsl:text> | |
| <!--repo --> | |
| <xsl:value-of select="$repo_code"/> | |
| <xsl:text>|</xsl:text> | |
| <!-- as id --> | |
| <xsl:value-of select="substring-after(@id, 'aspace_')"/> | |
| <!-- blank column --> | |
| <xsl:text>|</xsl:text> | |
| <xsl:text>|</xsl:text> | |
| <!-- title --> | |
| <xsl:value-of select="ead:did/ead:unittitle"/> | |
| <xsl:text>|</xsl:text> | |
| <!-- date --> | |
| <xsl:value-of select="ead:did/ead:unitdate"/> | |
| <!-- box number --> | |
| <xsl:value-of select="ead:did/ead:container[@type = 'box']"/> | |
| <xsl:text>|</xsl:text> | |
| <!-- folder/reel etc number --> | |
| <xsl:value-of select="ead:did/ead:container[2]"/> | |
| <xsl:text>|</xsl:text> | |
| <!-- dao indicator--> | |
| <xsl:text>PREVIOUSLY DIGITIZED</xsl:text> | |
| <xsl:text>|</xsl:text> | |
| <xsl:text>
</xsl:text> | |
| </xsl:when> | |
| <xsl:otherwise> | |
| <!--finding aid URL--> | |
| <xsl:value-of select="$fa_url"/> | |
| <xsl:text>|</xsl:text> | |
| <!--collection title--> | |
| <xsl:value-of select="$collection_name"/> | |
| <xsl:text>|</xsl:text> | |
| <!--bib ID--> | |
| <xsl:value-of select="$bib_id"/> | |
| <xsl:text>|</xsl:text> | |
| <!--rights--> | |
| <xsl:value-of select="$rights"/> | |
| <xsl:text>|</xsl:text> | |
| <!--restrictions--> | |
| <xsl:value-of select="$restrictions"/> | |
| <xsl:text>|</xsl:text> | |
| <!--repo --> | |
| <xsl:value-of select="$repo_code"/> | |
| <!-- series location --> | |
| <xsl:text>|</xsl:text> | |
| <xsl:choose> | |
| <xsl:when test="parent::ead:c[@level = 'series']"> | |
| <!-- grab series --> | |
| <xsl:value-of select="parent::ead:c[@level = 'series']/ead:did/ead:unittitle"/> | |
| <xsl:text>|</xsl:text> | |
| <!-- blank subseries column --> | |
| <xsl:text>No Subseries</xsl:text> | |
| <xsl:text>|</xsl:text> | |
| <xsl:text>No Parent File</xsl:text> | |
| <xsl:text>|</xsl:text> | |
| </xsl:when> | |
| <xsl:when test="parent::ead:c[@level = 'subseries']"> | |
| <!-- grab series and subseries--> | |
| <xsl:value-of select="ancestor::ead:c[@level = 'series'][1]/ead:did/ead:unittitle"/> | |
| <xsl:text>|</xsl:text> | |
| <xsl:value-of select="parent::ead:c[@level = 'subseries']/ead:did/ead:unittitle"/> | |
| <xsl:text>|</xsl:text> | |
| <xsl:text>No Parent File</xsl:text> | |
| <xsl:text>|</xsl:text> | |
| </xsl:when> | |
| <xsl:when test="parent::ead:c[@level = 'file']"> | |
| <!-- grab series and subseries and file --> | |
| <xsl:value-of select="ancestor::ead:c[@level = 'series'][1]/ead:did/ead:unittitle"/> | |
| <xsl:text>|</xsl:text> | |
| <xsl:value-of select="ancestor::ead:c[@level = 'subseries'][1]/ead:did/ead:unittitle"/> | |
| <xsl:text>|</xsl:text> | |
| <xsl:value-of select="parent::ead:c[@level = 'file']/ead:did/ead:unittitle"/> | |
| <xsl:text>|</xsl:text> | |
| </xsl:when> | |
| <xsl:otherwise> | |
| <xsl:text>|</xsl:text> | |
| <xsl:text>CHECK HIERARCHY</xsl:text> | |
| <xsl:text>|</xsl:text> | |
| </xsl:otherwise> | |
| </xsl:choose> | |
| <!-- as id --> | |
| <xsl:value-of select="substring-after(@id, 'aspace_')"/> | |
| <xsl:text>|</xsl:text> | |
| <!-- title --> | |
| <xsl:value-of select="ead:did/ead:unittitle"/> | |
| <xsl:text>|</xsl:text> | |
| <!-- date --> | |
| <xsl:choose> | |
| <xsl:when test="ead:did/ead:unitdate/text() = 'undated'"> | |
| <xsl:text>uuuu</xsl:text> | |
| </xsl:when> | |
| <xsl:otherwise> | |
| <xsl:value-of select="ead:did/ead:unitdate"/> | |
| </xsl:otherwise> | |
| </xsl:choose> | |
| <xsl:text>|</xsl:text> | |
| <!-- creator --> | |
| <xsl:choose> | |
| <xsl:when test="ead:did/ead:origination"> | |
| <xsl:value-of select="ead:did/ead:origination"/> | |
| </xsl:when> | |
| <xsl:otherwise> | |
| <xsl:value-of select="$creator"/> | |
| </xsl:otherwise> | |
| </xsl:choose> | |
| <xsl:text>|</xsl:text> | |
| <!-- box number --> | |
| <xsl:value-of select="ead:did/ead:container[@type = 'box']"/> | |
| <xsl:text>|</xsl:text> | |
| <!-- folder/reel etc number --> | |
| <xsl:value-of select="ead:did/ead:container[2]"/> | |
| <xsl:text>|</xsl:text> | |
| <!-- extent --> | |
| <xsl:value-of select="ead:did/ead:physdesc/ead:extent"/> | |
| <xsl:text>|</xsl:text> | |
| <!-- physfacet --> | |
| <xsl:value-of select="ead:did/ead:physdesc/ead:physfacet"/> | |
| <xsl:text>|</xsl:text> | |
| <!-- subject --> | |
| <xsl:text>AUDIO RECORDINGS</xsl:text> | |
| <!--<xsl:text>VIDEO RECORDINGS</xsl:text>--> | |
| <xsl:text>|</xsl:text> | |
| <!-- scope note --> | |
| <xsl:value-of select="ead:did/ead:scopecontent/ead:p"/> | |
| <xsl:text>|</xsl:text> | |
| <!-- language --> | |
| <xsl:value-of select="$language"/> | |
| <xsl:text>|</xsl:text> | |
| <xsl:text>
</xsl:text> | |
| </xsl:otherwise> | |
| </xsl:choose> | |
| </xsl:template> | |
| </xsl:stylesheet> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment