MarcEdit - giulioturetta/la-biblioteca-dei-dati GitHub Wiki

3. MarcEdit

Obiettivi

  • Avvio all'uso di un editor di metadati
  • Utilizzare funzioni di harvesting di metadati
  • Esplorare la directory XSLT
  • Eseguire operazioni di conversione
  • Eseguire operazioni di editing

Sommario

Cos'è

MarcEdit è un editor di metadati sviluppato a partire dal 1999 da Terry Reese nell'ambito di un progetto di bonifica del catalogo della Oregon University.

MarcEdit 7 (versione in uso MarcEdit 6)

Cosa fa

  • MARC Editing
  • MarcEditor: include molteplici funzioni di editing globale, espressioni regolari, supporto UTF-8 come anche la possibilità di configurare l'editor per l'uso di ogni set di caratteri supportato dal sistema
  • RDA Helper: disponibile sia come servizio stand alone sia come strumento integrato che di generare in automatico dati RDA a partire da set di metadati
  • Delimited Text Translator: è uno strumento che permette di convertire in MARC dati da fogli di calcolo, Access ecc.
  • Export as Tab Delimited: è uno strumento che permette l'esportazione di dati in csv ecc. --> verificare
  • Harvest OAI Data: è possibile raccogliere/harvest metadati da un Data Provider OAI con conversione diretta dei record in record MARC. I formati sorgente supportati sono MARCXML, oaimarc, oai_dc, and MODS (ma è possibile introdurre anche proprie conversioni)
  • XML Translations: supporta lo scambio e la conversione di metadati da formati XML a formati non-XML, formati MARC incluso
  • Characterset conversion: supporta la possibilità di convertire record MARC da set di caratteri differenti come MARC-8 (ANSEL) e UTF-8, ma supporta anche ogni altro set di caratteri in uso. Per esempio dati MARC in cinese classico possono essere convertiti in UTF-8 con MarcEdit
  • Z39.50/SRU Client: include un built client Z39.50 and SRU per l'interazione con altri library system
  • MARC SQL Explorer: include un SQL Explorer — uno strumento che consente di esportare dati nel proprio SQLite o dati MySQL e attivare queries SQL per estrarre informazioni
  • MARC validator: include strumenti di validazione dei dati MARC e di identificazione di dati MARC strutturati non correttamente
  • In più: ogni azione di divisione, unione e organizzazione dei dati in formati eterogenei
  • BIBFRAME

Documentazione

Blog di Terry Reese: http://blog.reeset.net

Tutorial: http://marcedit.reeset.net/tutorials

LibGuide MarcEdit, a cura della University of Illinois: http://guides.library.illinois.edu/MarcEdit ...

Funzioni

Proviamoci insieme

Iniziare

  • Da Start Menu aprire MarcEdit
  • Selezionare: Harvest OAI record (raggiungibile anche da Add-ins)
  • NB: Tools > Preferences è possibile selezionare fino a max 4 programmi

Harvesting e conversione

<OAI-PMH xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/                              http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"><responseDate>2017-11-21T17:19:08Z</responseDate><request verb="ListRecords" metadataPrefix="oai_dc" set="PSMC">https://fc.cab.unipd.it/oaiprovider/</request><ListRecords><record><header><identifier>info:fedora/oai:cab.unipd.it:o:145514</identifier><datestamp>2017-10-23T08:14:59Z</datestamp>
<setSpec>PSMC</setSpec>
</header><metadata><oai_dc:dc xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
<dc:rights>All rights reserved</dc:rights>
<dc:source>Biblioteca di Storia, Perg.Sto.4</dc:source>
<dc:coverage xml:lang="ita">XIII, 1200, Italia, Veneto, Padova</dc:coverage>
<dc:language>lat</dc:language>
<dc:subject xml:lang="ita">Pergamena, Uberto, S. Maria di Montagnana, Gerardo, Padova, S. Maria delle Carceri, Giovanni, Livaldo</dc:subject>
<dc:description xml:lang="ita">Recto.

Uberto chierico, sindaco e procuratore della chiesa di S. Maria di Montagnana, con il consenso dei suoi fratres, rinuncia all’appello da lui stesso presentato contro la sentenza emanata da Gerardo, vescovo di Padova, a favore della chiesa di S. Maria delle Carceri sulle decime novalium di Montagnana, riservandosi tuttavia lo ius in quartisio e ne promette l’osservanza a don Giovanni, preposto della controparte, con la fideiussione di prete Damiano. Lo stesso giorno, il medesimo ripete l’identico atto a d. Livaldo, priore della chiesa di S. Maria delle Carceri. Il 12 aprile successivo confermano e consentono due altri chierici di S. Maria di Montagnana.

Originale  (A).

“Le pergamene del Dipartimento di Storia dell’Università di Padova 1199-1236” p. 32-34
http://catalogo.unipd.it/F?func=find-c&ccl_term=IDN=PUV0777252&local_base=SBP01</dc:description><dc:identifier>hdl:11168/11.145514</dc:identifier>
<dc:identifier>http://phaidra.cab.unipd.it/o:145514</dc:identifier>
<dc:format>image/jpeg (467030 bytes)</dc:format>
<dc:format>manuscript (width: 160 mm, height: 270 mm)</dc:format>
<dc:relation>http://phaidra.cab.unipd.it/o:145556</dc:relation>
<dc:relation>http://phaidra.cab.unipd.it/o:152073</dc:relation>
<dc:title xml:lang="ita">1200 marzo 8, S. Maria delle Carceri, in capitulo </dc:title>
<dc:type xml:lang="eng">Image</dc:type>
<dc:publisher>PHAIDRA University of Padova</dc:publisher>
<dc:contributor>Università di Padova - Biblioteca di Storia (Digitiser)</dc:contributor>
</oai_dc:dc></metadata>
</record>
  1. Aprire MarcEdit
  2. Selezionare Harvest OAI Records
  3. In Metadata Harvester compilare i seguenti campi:
  • Server: inserire la BaseURL OAI-PMH di PHAIDRA: https://fc.cab.unipd.it/oaiprovider/
  • Set Name: inserire il setSpec del set che si intende harvestare, per esempio: PSMC
  • Metadata: dal menu a tendina selezionare lo schema di metadati dell'OAI che nel caso di PHAIDRA è &metadataPrefix=oai_dc, quindi Dublin Core. Gli schemi supportati dalle conversioni MarcEdit sono: Dublin Core, MODS, OAI_MARC, MARCXML

Richiamare data provider che espone i metadati anche in oai_unimarc:

  • in Crosswalk cliccare sulla cartella a destra del box e aprire la directory/cartella gialla MarcEdit XSLT
  • scorrere la lista di schemi di conversione disponibili

Nota: file xsl, eXtensible Stylesheet Language, è il linguaggio di descrizione dei fogli di stile XML sviluppato e mantenuto dal consorzio W3C: https://en.wikipedia.org/wiki/XSL

  • selezionare la conversione OAIDCtoMARCXML
  • confermare OK e avviare il processo di harvesting e conversione in MARCXML
  1. Si apre il MarcEditor visualizzando i record sorgente oai_dc convertiti in MARC21 https://www.loc.gov/marc/bibliographic/
=LDR  01686 am a  002053u     
=042  \\$adc
=245  00$a1200 marzo 8, S. Maria delle Carceri, in capitulo 
=260  \\$bPHAIDRA University of Padova.
=035  \\$ahdl:11168/11.145514
=520  \\$aRecto. Uberto chierico, sindaco e procuratore della chiesa di S. Maria di Montagnana, con il consenso dei suoi fratres, rinuncia all’appello da lui stesso presentato contro la sentenza emanata da Gerardo, vescovo di Padova, a favore della chiesa di S. Maria delle Carceri sulle decime novalium di Montagnana, riservandosi tuttavia lo ius in quartisio e ne promette l’osservanza a don Giovanni, preposto della controparte, con la fideiussione di prete Damiano. Lo stesso giorno, il medesimo ripete l’identico atto a d. Livaldo, priore della chiesa di S. Maria delle Carceri. Il 12 aprile successivo confermano e consentono due altri chierici di S. Maria di Montagnana. Originale (A). “Le pergamene del Dipartimento di Storia dell’Università di Padova 1199-1236” p. 32-34 http://catalogo.unipd.it/F?func=find-c&ccl_term=IDN=PUV0777252&local_base=SBP01
=540  \\$aAll rights reserved
=546  \\$alat
=690  \\$aPergamena, Uberto, S. Maria di Montagnana, Gerardo, Padova, S. Maria delle Carceri, Giovanni, Livaldo
=691  \\$aXIII, 1200, Italia, Veneto, Padova
=655  7\$aImage$2local
=100  10$aUniversità di Padova - Biblioteca di Storia $q                 (Digitiser)              $econtributor
=786  0\$nBiblioteca di Storia, Perg.Sto.4
=787  0\$nhttp://phaidra.cab.unipd.it/o:145556
=787  0\$nhttp://phaidra.cab.unipd.it/o:152073
=856  41$uhttp://phaidra.cab.unipd.it/o:145514$zConnect to this object online.

=LDR  00973 am a  002053u     
=042  \\$adc
=245  00$a1200 marzo 8, S. Maria delle Carceri, in capitulo
=260  \\$bPHAIDRA University of Padova.
=035  \\$ahdl:11168/11.145556
=520  \\$aVerso. Attergati di mani e di epoche differenti. “Le pergamene del Dipartimento di Storia dell’Università di Padova 1199-1236” p. 32-34 http://catalogo.unipd.it/F?func=find-c&ccl_term=IDN=PUV0777252&local_base=SBP01
=540  \\$aAll rights reserved
=546  \\$alat
=690  \\$aPergamena, S. Maria delle Carceri
=691  \\$aXV-XVI, Italia, Veneto, Padova
=655  7\$aImage$2local
=100  10$aUniversità di Padova - Biblioteca di Storia $q                 (Digitiser)              $econtributor
=786  0\$nBiblioteca di Storia, Perg.Sto.4
=787  0\$nhttp://phaidra.cab.unipd.it/o:145514
=787  0\$nhttp://phaidra.cab.unipd.it/o:152073
=856  41$uhttp://phaidra.cab.unipd.it/o:145556$zConnect to this object online.
MARC21XML UNIMARC
245 00$a 200 1$a
  1. Esito della conversione e analisi del tracciato MARC target
  • illustrare azioni di editing
  1. Utilizzare UNIMARC tool per la conversione dei dati MARC212UNIMARC

  2. Salvare il fileMARC21.mrc

  3. Da Tools aprire UNIMARC tools e processare la conversione MARC212UNIMARC

  4. Aprire il file UNIMARC in MarcEditor e analizzare il tracciato convertito

  5. Visualizzare il file UNIMARC in ALeph

  6. Domanda: è possibile perfezionare/personalizzare oppure correggere lo schema di conversione OAIDCtoMARCXML?

  7. Aprire la directory MarcEdit XSLT quindi selezionare la conversione OAIDCtoMARCXML

  8. Col tasto destro del mouse aprire il file OAIDCtoMARCXML in Notepad++ (edit with)

  9. Modificare OAIDCtoMARCXML 2 OAIDCtoUNIMARCXML

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/" 
	xmlns:dcterms="http://purl.org/dc/terms/1.1" 
	xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/
		http://www.openarchives.org/OAI/2.0/oai_dc.xsd"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns="http://www.loc.gov/MARC21/slim"  exclude-result-prefixes="dc dcterms oai_dc">
 
	<xsl:import href="MARC21slimUtils.xsl"/>
	<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
	
  
	<xsl:template match="/">
		<collection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd" >
			<xsl:apply-templates />
		</collection>
	</xsl:template>
	
	<xsl:template name="OAI-PMH">
			 <xsl:for-each select = "ListRecords/record/metadata/oai_dc:dc">
		        <xsl:apply-templates  />
		     </xsl:for-each>
		     <xsl:for-each select = "GetRecord/record/metadata/oai_dc:dc">
		        <xsl:apply-templates  />
		     </xsl:for-each>
	</xsl:template>

    <xsl:template match="text()" />
   	<xsl:template match="oai_dc:dc">
		<record>
			<xsl:element name="leader">
				<xsl:variable name="type" select="dc:type"/>
				<xsl:variable name="leader06">
					<xsl:choose>
						<xsl:when test="$type='collection'">p</xsl:when>
						<xsl:when test="$type='dataset'">m</xsl:when>
						<xsl:when test="$type='event'">r</xsl:when>
						<xsl:when test="$type='image'">k</xsl:when>
						<xsl:when test="$type='interactive resource'">m</xsl:when>
						<xsl:when test="$type='service'">m</xsl:when>
						<xsl:when test="$type='software'">m</xsl:when>
						<xsl:when test="$type='sound'">i</xsl:when>
						<xsl:when test="$type='text'">a</xsl:when>
						<xsl:otherwise>a</xsl:otherwise>
					</xsl:choose>
				</xsl:variable>
				<xsl:variable name="leader07">
					<xsl:choose>
						<xsl:when test="$type='collection'">c</xsl:when>
						<xsl:otherwise>m</xsl:otherwise>
					</xsl:choose>
				</xsl:variable>
				<xsl:value-of select="concat('      ',$leader06,$leader07,' a       3u     ')"/>
			</xsl:element>

			<datafield tag="042" ind1=" " ind2=" ">
				<subfield code="a">dc</subfield>
			</datafield>


			
			<xsl:for-each select="dc:creator">
				<xsl:choose>
					<xsl:when test="(.!='') and (position()=1)">
						<xsl:call-template name="persname_template">
							<xsl:with-param name="string" select="." />
							<xsl:with-param name="field" select="'700'" />
							<xsl:with-param name="ind1" select = "''" />
							<xsl:with-param name="ind2" select = "'1'" />
							<xsl:with-param name="type" select="'author'" />
						</xsl:call-template>
					</xsl:when>
					<xsl:otherwise>
						<xsl:if test=".!=''">
							<xsl:call-template name="persname_template">
								<xsl:with-param name="string" select="." />
								<xsl:with-param name="field" select="'702'" />
								<xsl:with-param name="ind1" select = "''" />
								<xsl:with-param name="ind2" select = "'1'" />
								<xsl:with-param name="type" select="'author'" />
							</xsl:call-template>
						</xsl:if>
					</xsl:otherwise>
				</xsl:choose>
			</xsl:for-each>
			
		
			<xsl:for-each select="dc:title[1]">
				<datafield tag="200" ind1="1" ind2=" ">
					<subfield code="a">
						<xsl:value-of select="."/>
					</subfield>
				</datafield>
			</xsl:for-each>

			<xsl:for-each select="dc:title[position()>1]">
				<xsl:if test=".!=''">
					<datafield tag="500" ind1="1" ind2="0">
						<subfield code="a">
							<xsl:value-of select="."/>
						</subfield>
					</datafield>
				</xsl:if>
			</xsl:for-each>

			<xsl:choose>
				<xsl:when test="dc:publisher">
					<xsl:if test="translate(dc:publisher/.,'.,:;','')!=''">
						<datafield tag="210" ind1=" " ind2=" ">
						<xsl:choose>
							<xsl:when test="dc:date">	
								<subfield code="d"><xsl:value-of select="dc:publisher[1]"/>, </subfield>	
								<xsl:if test="translate(dc:date[1]/., '.,:;','')!=''">
									<subfield code="d"><xsl:value-of select="dc:date[1]" />.</subfield>
								</xsl:if>
							</xsl:when>
							<xsl:otherwise>
								<subfield code="c"><xsl:value-of select="dc:publisher[1]"/>.</subfield>	
							</xsl:otherwise>
						</xsl:choose>
						</datafield>
					</xsl:if>
				</xsl:when>
				<xsl:otherwise>
					<xsl:if test="translate(dc:date[1],'.,:;','')!=''">
						<datafield tag="210" ind1=" " ind2=" ">
							<subfield code="d"><xsl:value-of select="dc:date[1]" />.</subfield>
						</datafield>
					</xsl:if>
				</xsl:otherwise>
			</xsl:choose>

			<xsl:for-each select="dc:coverage">
				<xsl:choose>
					<xsl:when test="translate(., '0123456789-.?','')=''">
						<!--Likely;this is a date-->
						<datafield tag="300" ind1=" " ind2=" ">
							<subfield code="a"><xsl:value-of select="."/></subfield>
						</datafield>
					</xsl:when>
					<xsl:otherwise>
						<!--likely a geographic subject, we will print this later-->
					</xsl:otherwise>
				</xsl:choose>
			</xsl:for-each>

			<xsl:for-each select="dc:identifier">
				<xsl:if test="position()!=last()">
					<datafield tag="035" ind1=" " ind2=" ">
						<subfield code="a"><xsl:value-of select="." /></subfield>
					</datafield>
				</xsl:if>
			</xsl:for-each>
			
			<xsl:for-each select="dc:description">
				<datafield tag="300" ind1=" " ind2=" ">
					<subfield code="a">
						<xsl:value-of select="normalize-space(.)"/>
					</subfield>
				</datafield>
			</xsl:for-each>


			<xsl:for-each select="dc:rights">
				<datafield tag="300" ind1=" " ind2=" ">
					<subfield code="a">
						<xsl:value-of select="."/>
					</subfield>
				</datafield>
			</xsl:for-each>


			<xsl:for-each select="dc:language">
				<datafield tag="101" ind1="0" ind2=" ">
					<subfield code="a">
						<xsl:value-of select="."/>
					</subfield>
				</datafield>
			</xsl:for-each>



			<xsl:for-each select="dc:subject">
				<datafield tag="610" ind1="0" ind2=" ">
					<subfield code="a">
						<xsl:value-of select="."/>
					</subfield>
				</datafield>
			</xsl:for-each>
			
			<xsl:for-each select="dc:coverage">
				<xsl:choose>
					<xsl:when test="translate(., '0123456789-.?','')=''">
						<!--Likely; this is a date-->
					</xsl:when>
					<xsl:otherwise>
						<!--likely a geographic subject-->
						<datafield tag="620" ind1=" " ind2=" ">
							<subfield code="d"><xsl:value-of select="." /></subfield>
						</datafield>
					</xsl:otherwise>
				</xsl:choose>
			</xsl:for-each>
																							

			<xsl:for-each select="dc:type">
				<datafield tag="655" ind1="7" ind2=" ">
					<subfield code="a">
						<xsl:value-of select="."/>
					</subfield>
					<subfield code="2">local</subfield>
				</datafield>
			</xsl:for-each>

			

			<xsl:for-each select="dc:contributor">
					<xsl:call-template name="persname_template">
						<xsl:with-param name="string" select="." />
						<xsl:with-param name="field" select="'700'" />
						<xsl:with-param name="ind1" select = "' '" />
						<xsl:with-param name="ind2" select = "'1'" />
						<xsl:with-param name="type" select="'contributor'" />
					</xsl:call-template>
			</xsl:for-each>
			
			<xsl:for-each select="dc:source">
				<datafield tag="316" ind1="0" ind2=" ">
					<subfield code="5">
						<xsl:value-of select="."/>
					</subfield>
				</datafield>
			</xsl:for-each>

			<xsl:for-each select="dc:relation">
				<datafield tag="787" ind1="0" ind2=" ">
					<subfield code="n">
						<xsl:value-of select="."/>
					</subfield>
				</datafield>
			</xsl:for-each>

			<xsl:if test="dc:identifier">
				<datafield tag="856" ind1="4" ind2="1">
					<subfield code="u"><xsl:value-of select="dc:identifier[last()]" /></subfield>
					<subfield code="z">Connect to this object online.</subfield>
				</datafield>
			</xsl:if>
		</record>		

	</xsl:template>
<xsl:template name="persname_template">
      <xsl:param name="string" />
      <xsl:param name="field" />
      <xsl:param name="ind1" />
      <xsl:param name="ind2" />
      <xsl:param name="type" />
      <datafield>
         <xsl:attribute name="tag">
            <xsl:value-of select="$field" />
         </xsl:attribute>
         <xsl:attribute name="ind1">
            <xsl:value-of select="$ind1" />
         </xsl:attribute>
         <xsl:attribute name="ind2">
            <xsl:value-of select="$ind2" />
         </xsl:attribute>

         <!-- Sample input: Brightman, Samuel C. (Samuel Charles), 1911-1992 -->
         <!-- Sample output: $aBrightman, Samuel C. $q(Samuel Charles), $d1911-. -->
         <!-- will handle names with dashes e.g. Bourke-White, Margaret -->

         <!-- CAPTURE PRIMARY NAME BY LOOKING FOR A PAREN OR A DASH OR NEITHER -->
         <xsl:choose>
            <!-- IF A PAREN, STOP AT AN OPENING PAREN -->
            <xsl:when test="contains($string, '(')!=0">
               <subfield code="a">
                  <xsl:value-of select="substring-before($string, '(')" />
               </subfield>
            </xsl:when>
            <!-- IF A DASH, CHECK IF IT'S A DATE OR PART OF THE NAME -->
            <xsl:when test="contains($string, '-')!=0">
               <xsl:variable name="name_1" select="substring-before($string, '-')" />
               <xsl:choose>
                  <!-- IF IT'S A DATE REMOVE IT -->
                  <xsl:when test="translate(substring($name_1, (string-length($name_1)), 1), '0123456789', '9999999999') = '9'">
                     <xsl:variable name="name" select="substring($name_1, 1, (string-length($name_1)-6))" />
                     <subfield code="a">
                        <xsl:value-of select="$name" />
                     </subfield>
                  </xsl:when>
                  <!-- IF IT'S NOT A DATE, CHECK WHETHER THERE IS A DATE LATER -->
                  <xsl:otherwise>
                     <xsl:variable name="remainder" select="substring-after($string, '-')" />
                     <xsl:choose>
                        <!-- IF THERE'S A DASH, ASSUME IT'S A DATE AND REMOVE IT -->
                        <xsl:when test="contains($remainder, '-')!=0">
                           <xsl:variable name="tmp" select="substring-before($remainder, '-')" />
                           <xsl:variable name="name_2" select="substring($tmp, 1, (string-length($tmp)-6))" />
                           <subfield code="a">
                              <xsl:value-of select="$name_1" />-<xsl:value-of select="$name_2" />
                           </subfield>
                        </xsl:when>
                        <!-- IF THERE'S NO DASH IN THE REMAINDER, OUTPUT IT -->
                        <xsl:otherwise>
                           <subfield code="a">
                              <xsl:value-of select="$string" />
                           </subfield>
                        </xsl:otherwise>
                     </xsl:choose>
                  </xsl:otherwise>
               </xsl:choose>
            </xsl:when>
            <!-- NO DASHES, NO PARENS, JUST OUTPUT THE NAME -->
            <xsl:otherwise>
               <subfield code="a">
                  <xsl:value-of select="$string" />
               </subfield>
            </xsl:otherwise>
         </xsl:choose>

         <!-- CAPTURE SECONDARY NAME IN PARENS FOR SUBFIELD Q -->
         <xsl:if test="contains($string, '(')!=0">
            <xsl:variable name="subq_tmp" select="substring-after($string, '(')" />
            <xsl:variable name="subq" select="substring-before($subq_tmp, ')')" />
            <subfield code="q">
               (<xsl:value-of select="$subq" />)
            </subfield>
         </xsl:if>

         <!-- CAPTURE DATE FOR SUBFIELD D, ASSUME DATE IS LAST ITEM IN FIELD -->
         <!-- Note: does not work if name has a dash in it -->
         <xsl:if test="contains($string, '-')!=0">
            <xsl:variable name="date_tmp" select="substring-before($string, '-')" />
            <xsl:variable name="remainder" select="substring-after($string, '-')" />
            <xsl:choose>
               <!-- CHECK SECOND HALF FOR ANOTHER DASH; IF PRESENT, ASSUME THAT IS DATE -->
               <xsl:when test="contains($remainder, '-')!=0">
                  <xsl:variable name="tmp" select="substring-before($remainder, '-')" />
                  <xsl:variable name="date_1" select="substring($remainder, (string-length($tmp)-3))" />
                  <!-- CHECK WHETHER IT HAS A NUMBER BEFORE IT AND IF SO, OUTPUT IT AS DATE -->
                  <xsl:if test="translate(substring($date_1, 1, 1), '0123456789', '9999999999') = '9'">
                     <subfield code="d">
                        <xsl:value-of select="$date_1" />.
                     </subfield>
                  </xsl:if>
               </xsl:when>
               <!-- OTHERWISE THIS IS THE ONLY DASH SO TAKE IT -->
               <xsl:otherwise>
                  <xsl:variable name="date_2" select="substring($string, (string-length($date_tmp)-3))" />
                  <!-- CHECK WHETHER IT HAS A NUMBER BEFORE IT AND IF SO, OUTPUT IT AS DATE -->
                  <xsl:if test="translate(substring($date_2, 1, 1), '0123456789', '9999999999') = '9'">
                     <subfield code="d">
                        <xsl:value-of select="$date_2" />.
                     </subfield>
                  </xsl:if>
               </xsl:otherwise>
            </xsl:choose>
         </xsl:if>
         <subfield code="e"><xsl:value-of select="$type" /></subfield>
      </datafield>
   </xsl:template>
	
</xsl:stylesheet>

16: Ripetere la procedura di harvesting e conversione

  1. Applicare funzioni di editing

  2. Salvare il file in *.mrc

Discussione

Esempio: Editare record MARC (illustrato in parte in Esempio Harvesting&Conversione)

000000000 FMT   L BK
000000000 LDR   L -----nbm0-22------i-450-
000000000 100   L $$a--------f--------km-y0itay50------ba
000000000 1010  L $$a
000000000 102   L $$a
000000000 106   L $$ah
000000000 140   L $$- $$a
000000000 141   L $$- $$a $$5
000000000 2001  L $$a1200 marzo 8, S. Maria delle Carceri, in capitulo$$bmanoscritto$$e $$f $$g
000000000 210   L $$a $$cPHAIDRA University of Padova.$$d
000000000 215   L $$a $$c $$d
000000000 300   L $$alat
000000000 312   L $$a $$9
000000000 314   L $$a $$9
000000000 316   L $$a $$5
000000000 317   L $$a $$5
000000000 330   L $$aRecto. Uberto chierico, sindaco e procuratore della chiesa di S. Maria di Montagnana, con il consenso dei suoi fratres, rinuncia all’appello da lui stesso presentato contro la sentenza emanata da Gerardo, vescovo di Padova, a favore della chiesa di S. Maria delle Carceri sulle decime novalium di Montagnana, riservandosi tuttavia lo ius in quartisio e ne promette l’osservanza a don Giovanni, preposto della controparte, con la fideiussione di prete Damiano. Lo stesso giorno, il medesimo ripete l’identico atto a d. Livaldo, priore della chiesa di S. Maria delle Carceri. Il 12 aprile successivo confermano e consentono due altri chierici di S. Maria di Montagnana. Originale (A). “Le pergamene del Dipartimento di Storia dell’Università di Padova 1199-1236” p. 32-34 http://catalogo.unipd.it/F?func=find-c&ccl_term=IDN=PUV0777252&local_base=SBP01
000000000 48800 L $$1001$$12001
000000000 48800 L $$1001$$12001
000000000 50010 L $$a $$3
000000000 5171  L $$a $$9
000000000 620   L $$a $$dPadova$$3CAGL002595
000000000 700 1 L $$aUniversità di Padova - Biblioteca di Storia$$b $$3 $$g(Digitiser)
000000000 701 1 L $$a $$b $$3
000000000 801 0 L $$aIT$$bPUV$$gREICAT
000000000 85641 L $$uhttp://phaidra.cab.unipd.it/o:145514$$zConnect to this object online.
⚠️ **GitHub.com Fallback** ⚠️