|
936 | 936 | --> |
937 | 937 |
|
938 | 938 | <switch> |
939 | | - <case test="$vAdminMetadata[bf:descriptionConventions]"> |
| 939 | + <case test="$vAdminMetadata[bf:descriptionLevel or bf:descriptionConventions or bflc:encodingLevel]"> |
940 | 940 | <df tag="040" repeatable="false"> |
941 | 941 | <var name="vLanguageUri"> |
942 | 942 | <switch> |
943 | | - <case test="$vAdminMetadata[bf:descriptionConventions]/bf:descriptionLanguage/@rdf:resource"><transform><xsl:value-of select="$vAdminMetadata/bf:descriptionLanguage/@rdf:resource"/></transform></case> |
944 | | - <case test="$vAdminMetadata[bf:descriptionConventions]/bf:descriptionLanguage/*/@rdf:about"><transform><xsl:value-of select="$vAdminMetadata/bf:descriptionLanguage/*/@rdf:about"/></transform></case> |
| 943 | + <case test="$vAdminMetadata[bf:descriptionLevel or bf:descriptionConventions or bflc:encodingLevel]/bf:descriptionLanguage/@rdf:resource"><transform><xsl:value-of select="$vAdminMetadata/bf:descriptionLanguage/@rdf:resource"/></transform></case> |
| 944 | + <case test="$vAdminMetadata[bf:descriptionLevel or bf:descriptionConventions or bflc:encodingLevel]/bf:descriptionLanguage/*/@rdf:about"><transform><xsl:value-of select="$vAdminMetadata/bf:descriptionLanguage/*/@rdf:about"/></transform></case> |
945 | 945 | </switch> |
946 | 946 | </var> |
| 947 | + <var name="df040sfsPreNS"> |
| 948 | + <switch> |
| 949 | + <case test="$vAdminMetadata/bflc:marcKey[starts-with(., '040')]"> |
| 950 | + <transform> |
| 951 | + <xsl:call-template name="tParseMarcKey"> |
| 952 | + <xsl:with-param name="pString" select="substring($vAdminMetadata/bflc:marcKey[starts-with(., '040')], 6)" /> |
| 953 | + </xsl:call-template> |
| 954 | + </transform> |
| 955 | + </case> |
| 956 | + <case test="$vAdminMetadata/bf:note/bf:Note[rdf:type/@rdf:resource='http://id.loc.gov/vocabulary/mnotetype/internal']/rdfs:label[starts-with(., '040')]"> |
| 957 | + <transform> |
| 958 | + <xsl:call-template name="tParseMarcKey"> |
| 959 | + <xsl:with-param name="pString" select="substring($vAdminMetadata/bf:note/bf:Note[rdf:type/@rdf:resource='http://id.loc.gov/vocabulary/mnotetype/internal']/rdfs:label[starts-with(., '040')], 6)" /> |
| 960 | + </xsl:call-template> |
| 961 | + </transform> |
| 962 | + </case> |
| 963 | + </switch> |
| 964 | + </var> |
| 965 | + <var name="df040sfs" xpath="exsl:node-set($df040sfsPreNS)" /> |
947 | 966 | <ind1 default=" "/> |
948 | 967 | <ind2 default=" "/> |
949 | 968 | <var name="vAuri"> |
|
1004 | 1023 | </transform> |
1005 | 1024 | </sf> |
1006 | 1025 | </case> |
1007 | | - <case test="$vAdminMetadata[bf:descriptionConventions]/bf:descriptionLanguage/*/*[local-name()='code']"> |
| 1026 | + <case test="$vAdminMetadata[bf:descriptionConventions or bflc:encodingLevel]/bf:descriptionLanguage/*/*[local-name()='code']"> |
1008 | 1027 | <sf code="b"> |
1009 | | - <transform><xsl:value-of select="$vAdminMetadata[bf:descriptionConventions]/bf:descriptionLanguage/*/*[local-name()='code']"/></transform> |
| 1028 | + <transform><xsl:value-of select="$vAdminMetadata[bf:descriptionConventions or bflc:encodingLevel]/bf:descriptionLanguage/*/*[local-name()='code']"/></transform> |
1010 | 1029 | </sf> |
1011 | 1030 | </case> |
1012 | 1031 | </switch> |
1013 | 1032 | <sf code="e"> |
1014 | | - <select xpath="$vAdminMetadata[bf:descriptionConventions]/bf:descriptionConventions[not(contains(@rdf:resource,'isbd')) and |
| 1033 | + <select xpath="$vAdminMetadata[bf:descriptionConventions or bflc:encodingLevel]/bf:descriptionConventions[not(contains(@rdf:resource,'isbd')) and |
1015 | 1034 | not(contains(*/@rdf:about,'isbd')) and |
1016 | 1035 | not(*/rdf:value='isbd') and |
1017 | 1036 | not(*/*[local-name()='code']='isbd') and |
|
1045 | 1064 | </switch> |
1046 | 1065 | </select> |
1047 | 1066 | </sf> |
1048 | | - <!-- Logic for $c was/is identical to $a, so just using the $a stuff here. --> |
| 1067 | + <!-- Logic for $c: Look for the historical value. If not found, use $a. --> |
1049 | 1068 | <switch> |
| 1069 | + <case test="$df040sfs//marc:subfield[@code='c']"> |
| 1070 | + <sf code="c" repeatable="false"><transform><xsl:value-of select="$df040sfs//marc:subfield[@code='c'][1]"/></transform></sf> |
| 1071 | + </case> |
1050 | 1072 | <case test="$vAcode = 'dlc'"> |
1051 | 1073 | <sf code="c" repeatable="false"><transform><xsl:value-of select="translate($vAcode,$lower,$upper)"/></transform></sf> |
1052 | 1074 | </case> |
|
1059 | 1081 | <transform> |
1060 | 1082 | <xsl:variable name="modifierCodePreNS"> |
1061 | 1083 | <marc:codes> |
1062 | | - <xsl:if test="$vAdminMetadata/bflc:marcKey[starts-with(., '040')]"> |
1063 | | - <xsl:variable name="df040sfsPreNS"> |
1064 | | - <subfields> |
1065 | | - <xsl:call-template name="tParseMarcKey"> |
1066 | | - <xsl:with-param name="pString" select="substring($vAdminMetadata/bflc:marcKey[starts-with(., '040')], 6)" /> |
1067 | | - </xsl:call-template> |
1068 | | - </subfields> |
1069 | | - </xsl:variable> |
1070 | | - <xsl:variable name="df040sfs" select="exsl:node-set($df040sfsPreNS)" /> |
1071 | | - <xsl:for-each select="$df040sfs//marc:subfield[@code='d']"> |
1072 | | - <marc:modifierCode><xsl:value-of select="." /></marc:modifierCode> |
1073 | | - </xsl:for-each> |
1074 | | - </xsl:if> |
| 1084 | + <xsl:for-each select="$df040sfs//marc:subfield[@code='d' and .!='']"> |
| 1085 | + <marc:modifierCode><xsl:value-of select="." /></marc:modifierCode> |
| 1086 | + </xsl:for-each> |
1075 | 1087 | <xsl:for-each select="$vAdminMetadata[bf:status/bf:Status[@rdf:about='http://id.loc.gov/vocabulary/mstatus/c']]"> |
1076 | 1088 | <xsl:sort select="bf:date" data-type="text" order="ascending" /> |
1077 | 1089 | <xsl:variable name="mCode"> |
|
1110 | 1122 | </xsl:when> |
1111 | 1123 | </xsl:choose> |
1112 | 1124 | </xsl:variable> |
1113 | | - <marc:modifierCode> |
1114 | | - <xsl:choose> |
1115 | | - <xsl:when test="$mCode = 'dlc'">DLC</xsl:when> |
1116 | | - <xsl:when test="$mCode = 'dlcmrc'">DLCMRC</xsl:when> |
1117 | | - <xsl:otherwise><xsl:value-of select="$mCode" /></xsl:otherwise> |
1118 | | - </xsl:choose> |
1119 | | - </marc:modifierCode> |
| 1125 | + <xsl:if test="$mCode != ''"> |
| 1126 | + <marc:modifierCode> |
| 1127 | + <xsl:choose> |
| 1128 | + <xsl:when test="$mCode = 'dlc'">DLC</xsl:when> |
| 1129 | + <xsl:when test="$mCode = 'dlcmrc'">DLC-MRC</xsl:when> |
| 1130 | + <xsl:otherwise><xsl:value-of select="$mCode" /></xsl:otherwise> |
| 1131 | + </xsl:choose> |
| 1132 | + </marc:modifierCode> |
| 1133 | + </xsl:if> |
1120 | 1134 | </xsl:for-each> |
1121 | 1135 | </marc:codes> |
1122 | 1136 | </xsl:variable> |
|
1177 | 1191 | </switch> |
1178 | 1192 |
|
1179 | 1193 | <switch> |
1180 | | - <case test="bf:Work/bf:language//@rdf:*[contains(., 'id.loc.gov/vocabulary/languages')] or bf:Work/bf:language/*/*[not(bf:source)]"> |
| 1194 | + <case test="bf:Work/bf:language//@rdf:*[contains(., 'id.loc.gov/vocabulary/languages') and not(contains(., '/zxx'))] or bf:Work/bf:language/*/*[not(bf:source)]"> |
1181 | 1195 | <var name="vAllLangElements" xpath=" |
1182 | 1196 | bf:Work/bf:language/@rdf:resource[contains(., 'id.loc.gov/vocabulary/languages')] | |
1183 | 1197 | bf:Work/bf:language/bf:Language[not(bf:source) and not(bf:part)]//@rdf:about[contains(., 'id.loc.gov/vocabulary/languages')] | |
|
1225 | 1239 |
|
1226 | 1240 | <xsl:for-each select="$vAllLangElements"> |
1227 | 1241 | <xsl:choose> |
1228 | | - <xsl:when test="position() = 1"> |
| 1242 | + <xsl:when test="position() = 1 and $vFirstLangCode!='zxx'"> |
1229 | 1243 | <marc:subfield code="a"><xsl:value-of select="$vFirstLangCode"/></marc:subfield> |
1230 | 1244 | </xsl:when> |
| 1245 | + <xsl:when test="position() = 1 and $vFirstLangCode='zxx'" /> |
1231 | 1246 | <xsl:otherwise> |
1232 | 1247 | <xsl:variable name="vLangCode"> |
1233 | 1248 | <xsl:choose> |
|
1305 | 1320 | </case> |
1306 | 1321 | </switch> |
1307 | 1322 | <switch> |
1308 | | - <case test="bf:Work/bf:language//@rdf:*[not(contains(., 'id.loc.gov/vocabulary/languages'))] or bf:Work/bf:language/*/bf:source"> |
| 1323 | + <case test="bf:Work/bf:language//@rdf:*[(local-name='resource' or local-name='about') and not(contains(., 'id.loc.gov/vocabulary/languages'))] or bf:Work/bf:language/*/bf:source"> |
1309 | 1324 | <df tag="041"> |
1310 | 1325 | <ind1 default=" "> |
1311 | 1326 | <switch> |
|
1680 | 1695 | <df tag="043"> |
1681 | 1696 | <context xpath="bf:Work/bf:geographicCoverage[ |
1682 | 1697 | contains(@rdf:resource,'id.loc.gov/vocabulary/geographicAreas') or |
1683 | | - contains(bf:GeographicCoverage/@rdf:about,'id.loc.gov/vocabulary/geographicAreas') or |
1684 | | - bf:GeographicCoverage/rdf:value or |
1685 | | - bf:GeographicCoverage/madsrdf:code or |
1686 | | - madsrdf:Geographic/madsrdf:code]"> |
| 1698 | + contains(bf:GeographicCoverage/@rdf:about,'id.loc.gov/vocabulary/geographicAreas') or |
| 1699 | + bf:GeographicCoverage/madsrdf:code or |
| 1700 | + bf:GeographicCoverage/bf:code or |
| 1701 | + madsrdf:Geographic/madsrdf:code or |
| 1702 | + bf:GeographicCoverage/rdf:value]"> |
1687 | 1703 | <ind1 default=" "/> |
1688 | 1704 | <ind2 default=" "/> |
1689 | 1705 | <var name="vUri"> |
|
1693 | 1709 | </switch> |
1694 | 1710 | </var> |
1695 | 1711 | <switch> |
| 1712 | + <case test="*/bf:code"> |
| 1713 | + <sf code="a"><select xpath="*/bf:code" /></sf> |
| 1714 | + <switch> |
| 1715 | + <case test="*/@rdf:about"> |
| 1716 | + <sf code="0"><transform><xsl:value-of select="*/@rdf:about"/></transform></sf> |
| 1717 | + </case> |
| 1718 | + </switch> |
| 1719 | + </case> |
1696 | 1720 | <case test="*/madsrdf:code"> |
1697 | 1721 | <sf code="a"><select xpath="*/madsrdf:code" /></sf> |
1698 | 1722 | <switch> |
|
0 commit comments