source: pmb4.2/trunk/fuentes/pmb/admin/connecteurs/in/sru/xslt/MODS2Up2MODS3.xsl @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 10.4 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<xsl:stylesheet version="1.0" xmlns:xlink="http://www.w3.org/TR/xlink" 
3xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
4xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mods="http://www.loc.gov/mods/">
5        <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
6        <!-- MODS version 2 to MODS version 3 Conversion Stylesheet
7                Trail 9/2003
8                Change log: 4/21/06 deleted schemaLocation as well as namespace references under modsCollection and mods sections. Tested successfully w/Xalan processor. Other processors seem ta add xmlns codes that can be removed after converting to MODS v3. Denenberg, Meehleib, Trail.
9        -->
10        <xsl:template match="/record">
11        <record>
12                <xsl:choose>
13                        <xsl:when test="mods:collection">
14                                <xsl:for-each select="mods:collection">
15                                        <xsl:apply-templates/>
16                                </xsl:for-each>
17                        </xsl:when>
18                        <xsl:when test="mods:modsCollection">
19                                <xsl:for-each select="mods:modsCollection">
20                                        <modsCollection>
21                      <xsl:for-each select="mods:mods">
22                                                        <xsl:apply-templates/>
23                                                </xsl:for-each>
24                                        </modsCollection>
25                                </xsl:for-each>
26                        </xsl:when>
27                        <xsl:when test="mods:mods">
28                                <xsl:for-each select="mods:mods">
29                                        <xsl:apply-templates/>
30                                </xsl:for-each>
31                        </xsl:when>
32                </xsl:choose>
33        </record>
34        </xsl:template>
35
36        <xsl:template match="mods:title"><!--moves parts outsiede title -->             
37                <mods:title>
38                        <xsl:value-of select="."/>
39                </mods:title>
40                <xsl:apply-templates select="partName|partNumber"/>
41        </xsl:template>
42
43        <xsl:template match="mods:role">
44                <mods:role>
45                        <mods:roleTerm>
46                                <xsl:attribute name="mods:type">
47                                        <xsl:value-of select="local-name(*)"/>
48                                </xsl:attribute>
49                                <xsl:value-of select="*"/>
50                        </mods:roleTerm>
51                </mods:role>
52        </xsl:template>
53
54        <xsl:template match="mods:place">
55                <xsl:for-each select="*">
56                        <mods:place>   
57                                <mods:placeTerm>
58                                        <xsl:choose>
59                                                <xsl:when test="@mods:authority='marc'">
60                                                        <xsl:attribute name="mods:authority">marccountry</xsl:attribute>
61                                                </xsl:when>
62                                                <xsl:when test="not(@mods:authority)"/>
63                                                <xsl:otherwise><xsl:copy-of select="@mods:authority"/></xsl:otherwise>
64                                        </xsl:choose>                                                           
65                                        <xsl:attribute name="mods:type">
66                                                <xsl:value-of select="local-name()"/>
67                                        </xsl:attribute>
68                                        <xsl:value-of select="."/>
69                                </mods:placeTerm>
70                        </mods:place>
71                </xsl:for-each>
72        </xsl:template>
73
74        <xsl:template match="mods:form">               
75                <mods:form>                     
76                        <xsl:copy-of select="@*"/>
77                        <xsl:choose>
78                                <xsl:when test="mods:unControlled">
79                                        <xsl:value-of select="mods:unControlled"/>
80                                </xsl:when>
81                                <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
82                        </xsl:choose>
83                </mods:form>
84        </xsl:template>
85
86        <xsl:template match="mods:identifier">
87<!--1. Convert all <identifier type="uri"> to <location><url>
88This would make an assumption that any URIs previously used are really
89locations. That is probably a likely assumption.
90
912. Convert <identifier type="uri"> to both <location><url> and retain the
92previously coded <identifier type="uri">. This might be safest but causes
93redundancy. A human being generally would have to determine whether it is
94really an identifier or location, although in many cases it isn't obvious.
95
963. Analyze <identifier type="uri"> and if it begins with doi* or hdl* or purl* put it in
97both places. The rest go in location.
98
994. Leave it as is in <identifier> and let the user decide whether to
100convert it.
101************ option 3 selected ************
102-->
103                <xsl:choose>
104                        <xsl:when test="@mods:type='uri'">                     
105                                <xsl:choose>
106                                        <xsl:when test="starts-with(.,'hdl') or starts-with(.,'doi') or starts-with(.,'purl')or starts-with(.,'http://hdl')">
107                                                <mods:location>
108                                                        <mods:url><xsl:value-of select="."/></mods:url>
109                                                </mods:location>
110                                                <xsl:copy-of select="."/>
111                                        </xsl:when>
112                                        <xsl:otherwise>
113                                                <mods:location>
114                                                        <mods:url><xsl:value-of select="."/></mods:url>
115                                                </mods:location>
116                                        </xsl:otherwise>
117                                </xsl:choose>
118                        </xsl:when>
119                        <xsl:otherwise>
120                                <xsl:call-template name="copy"/>
121                        </xsl:otherwise>
122                </xsl:choose>           
123        </xsl:template>
124
125        <xsl:template match="mods:location">           
126                <mods:location>
127                        <mods:physicalLocation>
128                                <xsl:copy-of select="@*"/>                             
129                                <xsl:value-of select="."/>             
130                        </mods:physicalLocation>
131                </mods:location>               
132        </xsl:template>
133       
134        <xsl:template match="mods:language">
135
136                <mods:language>
137                        <mods:languageTerm>                             
138                                <xsl:if test="@mods:authority">
139                                        <xsl:copy-of select="@mods:authority"/>
140                                                <xsl:attribute name="mods:type">code</xsl:attribute>
141                                </xsl:if>
142                                <xsl:if test="not(@mods:authority)">
143                                        <xsl:attribute name="mods:type">text</xsl:attribute>
144                                </xsl:if>
145                                <xsl:value-of select="."/>                     
146                        </mods:languageTerm>
147                </mods:language>
148        </xsl:template>
149
150        <xsl:template match="mods:relatedItem">
151                <mods:relatedItem>
152                        <xsl:if test="not(@mods:type='related')">
153                                <xsl:attribute name="mods:type">
154                                        <xsl:value-of select="@mods:type"/>
155                                </xsl:attribute>
156                        </xsl:if>
157                        <xsl:call-template name="copy"/>
158                </mods:relatedItem>
159        </xsl:template>
160
161        <xsl:template match="mods:languageOfCataloging">
162                <mods:languageOfCataloging>
163                        <mods:languageTerm>                             
164                                <xsl:if test="@mods:authority">
165                                        <xsl:copy-of select="@mods:authority"/>
166                                        <xsl:attribute name="mods:type">
167                                                <xsl:text>code</xsl:text>
168                                        </xsl:attribute>
169                                </xsl:if>
170                                <xsl:value-of select="."/>                     
171                        </mods:languageTerm>
172
173                </mods:languageOfCataloging>
174        </xsl:template>
175
176        <xsl:template match="@mods:*" name="attribs">
177            <xsl:attribute name="mods:{local-name()}">
178                <xsl:value-of select="."/>
179            </xsl:attribute>
180        </xsl:template>         
181       
182        <xsl:template match="mods:*" name="copy">
183                <xsl:element name="mods:{local-name()}">
184<!--                    <xsl:copy-of select="@*"/>-->
185                        <xsl:call-template name="attribs"/>
186                        <xsl:apply-templates/>
187                </xsl:element>
188        </xsl:template>
189       
190</xsl:stylesheet><!-- Stylus Studio meta-information - (c)1998-2003 Copyright Sonic Software Corporation. All rights reserved.
191<metaInformation>
192<scenarios ><scenario default="no" name="mods2to3" userelativepaths="yes" externalpreview="no" url="modsv2&#x2D;1.xml" htmlbaseurl="" outputurl="..\test_files\modsv3fromv2.xml" processortype="internal" commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext=""/><scenario default="no" name="Books" userelativepaths="yes" externalpreview="no" url="file://c:\Documents and Settings\jrad\Desktop\MODS\v2\mods99042030.xml" htmlbaseurl="" outputurl="file://c:\Documents and Settings\jrad\Desktop\MODS\v3\mods99042030.xml" processortype="internal" commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext=""/><scenario default="no" name="Serials" userelativepaths="yes" externalpreview="no" url="file://c:\Documents and Settings\jrad\Desktop\MODS\v2\mods86646620.xml" htmlbaseurl="" outputurl="file://c:\Documents and Settings\jrad\Desktop\MODS\v3\mods86646620.xml" processortype="internal" commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext=""/><scenario default="no" name="Computer File" userelativepaths="yes" externalpreview="no" url="file://c:\Documents and Settings\jrad\Desktop\MODS\v2\mods98801326.xml" htmlbaseurl="" outputurl="file://c:\Documents and Settings\jrad\Desktop\MODS\v3\mods98801326.xml" processortype="internal" commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext=""/><scenario default="no" name="Conference" userelativepaths="yes" externalpreview="no" url="file://c:\Documents and Settings\jrad\Desktop\MODS\v2\mods97129132.xml" htmlbaseurl="" outputurl="file://c:\Documents and Settings\jrad\Desktop\MODS\v3\mods97129132.xml" processortype="internal" commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext=""/><scenario default="no" name="Map" userelativepaths="yes" externalpreview="no" url="file://c:\Documents and Settings\jrad\Desktop\MODS\v2\mods83691515.xml" htmlbaseurl="" outputurl="file://c:\Documents and Settings\jrad\Desktop\MODS\v3\mods83691515.xml" processortype="internal" commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext=""/><scenario default="no" name="Motion Picture" userelativepaths="yes" externalpreview="no" url="file://c:\Documents and Settings\jrad\Desktop\MODS\v2\mods80700998.xml" htmlbaseurl="" outputurl="file://c:\Documents and Settings\jrad\Desktop\MODS\v3\mods80700998.xml" processortype="internal" commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext=""/><scenario default="no" name="Music" userelativepaths="yes" externalpreview="no" url="file://c:\Documents and Settings\jrad\Desktop\MODS\v2\mods85753651.xml" htmlbaseurl="" outputurl="file://c:\Documents and Settings\jrad\Desktop\MODS\v3\mods85753651.xml" processortype="internal" commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext=""/><scenario default="no" name="Sound Recording" userelativepaths="yes" externalpreview="no" url="file://c:\Documents and Settings\jrad\Desktop\MODS\v2\mods94759273.xml" htmlbaseurl="" outputurl="file://c:\Documents and Settings\jrad\Desktop\MODS\v3\mods94759273.xml" processortype="internal" commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext=""/><scenario default="yes" name="Mixed Material" userelativepaths="yes" externalpreview="no" url="file://c:\Documents and Settings\jrad\Desktop\MODS\v2\mods83001404.xml" htmlbaseurl="" outputurl="file://C:\Documents and Settings\jrad\Desktop\MODS\v3\mods83001404.xml" processortype="internal" commandline="" additionalpath="" additionalclasspath="" postprocessortype="none" postprocesscommandline="" postprocessadditionalpath="" postprocessgeneratedext=""/></scenarios><MapperInfo srcSchemaPath="" srcSchemaRoot="" srcSchemaPathIsRelative="yes" srcSchemaInterpretAsXML="no" destSchemaPath="" destSchemaRoot="" destSchemaPathIsRelative="yes" destSchemaInterpretAsXML="no"/>
193</metaInformation>
194-->
Note: See TracBrowser for help on using the repository browser.