XSL files now in sync with future 1.7 series
[pazpar2-moved-to-github.git] / etc / cf.xsl
index 49eb5e0..61edc04 100644 (file)
 
   <xsl:param name="medium" />
 
-  <!--
-    According to cf/builder/templates/parseTask.cff, connectors can
-    also generate a "medium" field, but that is ignored in this
-    stylesheet, the rule below instead using an XSLT parameter.
-    Should the data element be used in preference when it is included?
-  -->
-
+  <!-- Use medium parameter if given. Default to medium from connector -->
   <xsl:template match="/record">
     <pz:record>
       <pz:metadata type="medium">
-         <xsl:value-of select="$medium" />
+        <xsl:choose>
+          <xsl:when test="string-length($medium)">
+            <xsl:value-of select="$medium" />
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:if test="medium">
+             <xsl:value-of select="medium" />
+            </xsl:if>
+          </xsl:otherwise>
+        </xsl:choose>
       </pz:metadata>
       <xsl:apply-templates/>
     </pz:record>
     </pz:metadata>
   </xsl:template>
 
-  <xsl:template match="author">
-    <pz:metadata type="author">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="description">
-    <pz:metadata type="description">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-  
-  <xsl:template match="publisher">
-    <pz:metadata type="publisher">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="subject">
-    <pz:metadata type="subject">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="isbn">
-    <pz:metadata type="isbn">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="issn">
-    <pz:metadata type="issn">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
   <xsl:template match="journaltitle">
     <pz:metadata type="journal-title">
       <xsl:value-of select="."/>
     </pz:metadata>
   </xsl:template>
 
-  <xsl:template match="volume">
-    <pz:metadata type="volume">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="issue">
-    <pz:metadata type="issue">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="page">
-    <pz:metadata type="page">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="endpage">
-    <pz:metadata type="endpage">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
   <!--
     According to cf/builder/templates/parseTask.cff, connectors can
     also generate a "holding" field, but it's not clear how that is
   -->
 
   <xsl:template match="item">
-    <pz:metadata type="locallocation">
-      <xsl:choose>
-       <xsl:when test="string-length(location)">
-         <xsl:value-of select="location"/>
-       </xsl:when>
-       <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
-      </xsl:choose>
+    <pz:metadata type="due" empty="PAZPAR2_NULL_VALUE">
+      <xsl:value-of select="due"/>
     </pz:metadata>
-    <pz:metadata type="callnumber">
-      <xsl:choose>
-       <xsl:when test="string-length(callno)">
-         <xsl:value-of select="callno"/>
-       </xsl:when>
-       <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
-      </xsl:choose>
+    <pz:metadata type="locallocation" empty="PAZPAR2_NULL_VALUE">
+      <xsl:value-of select="location"/>
     </pz:metadata>
-    <pz:metadata type="available">
-      <xsl:choose>
-       <xsl:when test="string-length(available)">
-         <xsl:value-of select="available"/>
-       </xsl:when>
-       <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
-      </xsl:choose>
+    <pz:metadata type="callnumber" empty="PAZPAR2_NULL_VALUE">
+      <xsl:value-of select="callno"/>
     </pz:metadata>
-    <pz:metadata type="publicnote">
-      <xsl:choose>
-       <xsl:when test="string-length(publicnote)">
-         <xsl:value-of select="publicnote"/>
-       </xsl:when>
-       <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
-      </xsl:choose>
+    <pz:metadata type="available" empty="PAZPAR_NULL_VALUE">
+      <xsl:value-of select="available"/>
     </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="due">
-    <pz:metadata type="due">
-      <xsl:value-of select="."/>
+    <pz:metadata type="publicnote" empty="PAZPAR2_NULL_VALUE">
+      <xsl:value-of select="publicnote"/>
     </pz:metadata>
   </xsl:template>
 
       <xsl:value-of select="."/>
     </pz:metadata>
   </xsl:template>
+  
+  <!-- no-op template to avoid printing medium out --> 
+  <xsl:template match="medium" />
 
-  <xsl:template match="thumburl">
-    <pz:metadata type="thumburl">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="score">
-    <pz:metadata type="score">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="id">
-    <pz:metadata type="id">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="available">
-    <pz:metadata type="available">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="citation">
-    <pz:metadata type="citation">
-      <xsl:value-of select="."/>
-      </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="relevance">
-    <pz:metadata type="relevance">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="booktitle">
-    <pz:metadata type="booktitle">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="copyright">
-    <pz:metadata type="copyright">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="copyrightabstract">
-    <pz:metadata type="copyrightabstract">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="pubtype">
-    <pz:metadata type="pubtype">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="doctype">
-    <pz:metadata type="doctype">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="extent">
-    <pz:metadata type="extent">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="format">
-    <pz:metadata type="format">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="languageitem">
-    <pz:metadata type="languageitem">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="languageabstract">
-    <pz:metadata type="languageabstract">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="permalink">
-    <pz:metadata type="permalink">
+  <xsl:template match="*" >
+    <pz:metadata type="{local-name()}">
       <xsl:value-of select="."/>
     </pz:metadata>
   </xsl:template>