1 <?xml version="1.0" encoding="UTF-8"?>
4 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
5 xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
6 xmlns:marc="http://www.loc.gov/MARC21/slim"
7 xmlns:str="http://exslt.org/strings"
8 extension-element-prefixes="str">
10 <xsl:variable name="resolver">http://zeus.lib.uoc.gr:3210/sfxtst3</xsl:variable>
12 <xsl:template name="insert-md-openurl">
14 <xsl:value-of select="$resolver" /><xsl:text>?generatedby=pz2</xsl:text>
15 <xsl:call-template name="ou-parse-author" />
16 <xsl:call-template name="ou-parse-date" />
17 <xsl:call-template name="ou-parse-volume" />
18 <xsl:call-template name="ou-parse-any">
19 <xsl:with-param name="field_name" select="string('isbn')" />
21 <xsl:call-template name="ou-parse-any">
22 <xsl:with-param name="field_name" select="string('issn')" />
24 <xsl:call-template name="ou-parse-any">
25 <xsl:with-param name="field_name" select="string('title')" />
27 <xsl:call-template name="ou-parse-any">
28 <xsl:with-param name="field_name" select="string('atitle')" />
33 <!-- parsing raw string data -->
35 <xsl:template name="ou-parse-author" >
36 <xsl:variable name="author">
37 <xsl:call-template name="ou-author" />
40 <xsl:variable name="aulast" select="normalize-space(substring-before($author, ','))"/>
42 <xsl:variable name="aufirst"
43 select="substring-before( normalize-space(substring-after($author, ',')), ' ')"/>
45 <xsl:if test="$aulast != ''">
46 <xsl:text>&aulast=</xsl:text>
47 <xsl:value-of select="$aulast" />
50 <xsl:if test="string-length( translate($aufirst, '.', '') ) > 1" >
51 <xsl:text>&aufirst=</xsl:text>
52 <xsl:value-of select="$aufirst" />
57 <xsl:template name="ou-parse-volume">
58 <xsl:variable name="volume">
59 <xsl:call-template name="ou-volume" />
62 <xsl:variable name="vol" select="substring-after($volume, 'Vol')"/>
63 <xsl:variable name="issue" select="false()" />
64 <xsl:variable name="spage" select="false()" />
67 <xsl:text>&volume=</xsl:text>
68 <xsl:value-of select="$vol" />
71 <xsl:if test="$issue">
72 <xsl:text>&issue=</xsl:text>
73 <xsl:value-of select="$issue" />
76 <xsl:if test="$spage">
77 <xsl:text>&spage=</xsl:text>
78 <xsl:value-of select="$vol" />
84 <xsl:template name="ou-parse-date">
85 <xsl:variable name="date">
86 <xsl:call-template name="ou-date" />
89 <xsl:variable name="parsed_date" select="translate($date, '.[]c;', '')"/>
91 <xsl:if test="$parsed_date">
92 <xsl:text>&date=</xsl:text>
93 <xsl:value-of select="$parsed_date" />
99 <xsl:template name="ou-parse-any">
100 <xsl:param name="field_name" />
102 <xsl:variable name="field_value">
105 <xsl:when test="$field_name = 'isbn'">
106 <xsl:call-template name="ou-isbn"/>
109 <xsl:when test="$field_name = 'issn'">
110 <xsl:call-template name="ou-issn"/>
113 <xsl:when test="$field_name = 'atitle'">
114 <xsl:call-template name="ou-atitle"/>
117 <xsl:when test="$field_name = 'title'">
118 <xsl:call-template name="ou-title"/>
124 <xsl:variable name="digits" select="1234567890"/>
126 <xsl:variable name="parsed_value">
129 <xsl:when test="$field_name = 'isbn'">
130 <xsl:value-of select="translate($field_value, translate($field_value, concat($digits, 'X'), ''), '')"/>
133 <xsl:when test="$field_name = 'issn'">
134 <xsl:value-of select="translate($field_value, translate($field_value, concat($digits, '-', 'X'), ''), '')"/>
137 <xsl:when test="$field_name = 'atitle'">
138 <xsl:value-of select="translate(normalize-space($field_value), '.', '')"/>
141 <xsl:when test="$field_name = 'title'">
142 <xsl:value-of select="translate(normalize-space($field_value), '.', '')"/>
149 <xsl:if test="$parsed_value != ''">
150 <xsl:text>&</xsl:text>
151 <xsl:value-of select="$field_name" />
152 <xsl:text>=</xsl:text>
153 <xsl:value-of select="$parsed_value" />
164 * indent-tabs-mode: nil
166 * vim: shiftwidth=2 tabstop=4 expandtab