Skip to content

Commit 8ed4dfc

Browse files
Adding URI encoded trailing slash to baseURL
1 parent 2a6f5c0 commit 8ed4dfc

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

stylesheets/tei2iiif.xsl

+14-8
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" exclude-result-prefixes="xs tei" version="3.0">
3+
<xsl:param name="output-result-document" select="'yes'"/><!-- set to 'yes' to use <result-document> -->
34
<xsl:output indent="no" omit-xml-declaration="yes" method="text" encoding="utf-8" />
4-
<xsl:variable name="schemaFile" select="doc('../schemas/manuscripta.rng')"/>
5+
<xsl:variable name="schemaFile" select="if ($output-result-document='yes') then doc('../schemas/manuscripta.rng') else doc('../data/schemas/manuscripta.rng')"/>
6+
<xsl:variable name="iiifFolder">
7+
<xsl:text>../../../../iiif/test2/</xsl:text>
8+
</xsl:variable>
59
<xsl:template match="/">
610
<xsl:apply-templates />
711
</xsl:template>
812
<xsl:template match="tei:TEI">
913
<xsl:variable name="repository" select="//tei:repository" />
1014
<xsl:variable name="msID" select="substring-after(@xml:id,'ms-')" />
11-
<xsl:variable name="baseURL" select="//tei:facsimile/@xml:base"/>
15+
<!-- URI encode trailing slash in @xml:base as required by the IIIF Image API specification (https://iiif.io/api/image/2.0/#uri-encoding-and-decoding) -->
16+
<xsl:variable name="baseURL" select="concat(substring(//tei:facsimile/@xml:base, 1, string-length(//tei:facsimile/@xml:base)-1), '%2F')"/>
1217
<!-- variables for metadata -->
1318
<xsl:variable name="shelfmark" select="//tei:idno[@type = 'shelfmark']" />
1419
<xsl:variable name="head" select="//tei:msDesc/tei:head/normalize-space()" />
@@ -57,7 +62,8 @@
5762
<xsl:variable name="first-folio" select="//tei:facsimile/(tei:surface[matches(@xml:id, '^ms-\d{6}(_\d{4})?_\dr?$')][1] | tei:surface[matches(@xml:id, '^ms-\d{6}(_\d{4})?_S?\dr?$')][1] | tei:surface[1])[last()]/tei:graphic/@url" />
5863
<xsl:variable name="first-folio-id" select="translate($first-folio, '.tif', '')" />
5964
<xsl:variable name="start-canvas" select="count(//tei:surface[following-sibling::tei:surface/tei:graphic[@url = $first-folio]])"/>
60-
<xsl:if test="exists(//tei:facsimile)"><xsl:result-document href="{concat('../../../../iiif/temp/',$msID,'/manifest.json')}">{
65+
<xsl:variable name="result-document-path" select="if ($output-result-document='yes') then concat($iiifFolder,$msID,'/manifest.json') else ()"/>
66+
<xsl:if test="exists(//tei:facsimile)"><xsl:result-document href="{$result-document-path}">{
6167
"@context": "http://iiif.io/api/presentation/2/context.json",
6268
"@id": "https://www.manuscripta.se/iiif/<xsl:value-of select="$msID" />/manifest.json",
6369
"@type": "sc:Manifest",
@@ -97,7 +103,7 @@
97103
"@id": "https://www.manuscripta.se/iiif/<xsl:value-of select="$msID" />/canvas/c-<xsl:value-of select="$start-canvas + 1"/>.json",
98104
"service": {
99105
"@context": "http://iiif.io/api/image/2/context.json",
100-
"@id": "<xsl:value-of select="$baseURL" /><xsl:value-of select="$msID" />/<xsl:value-of select="$first-folio" />",
106+
"@id": "<xsl:value-of select="$baseURL" /><xsl:value-of select="$first-folio" />",
101107
"profile": "http://iiif.io/api/image/2/level1.json"
102108
}
103109
},
@@ -132,10 +138,10 @@
132138
"height": <xsl:value-of select="$height" />,
133139
"width": <xsl:value-of select="$width" />,
134140
"thumbnail": {
135-
"@id": "<xsl:value-of select="$baseURL" /><xsl:value-of select="$msID" />/<xsl:value-of select="$image" />/full/90,/0/default.jpg",
141+
"@id": "<xsl:value-of select="$baseURL" /><xsl:value-of select="$image" />/full/90,/0/default.jpg",
136142
"service": {
137143
"@context": "http://iiif.io/api/image/2/context.json",
138-
"@id": "<xsl:value-of select="$baseURL" /><xsl:value-of select="$msID" />/<xsl:value-of select="$image" />",
144+
"@id": "<xsl:value-of select="$baseURL" /><xsl:value-of select="$image" />",
139145
"profile": "http://iiif.io/api/image/2/level1.json"
140146
}
141147
},
@@ -146,14 +152,14 @@
146152
"motivation": "sc:painting",
147153
"on": "https://www.manuscripta.se/iiif/<xsl:value-of select="$msID" />/canvas/c-<xsl:value-of select="$count-number" />.json",
148154
"resource": {
149-
"@id": "<xsl:value-of select="$baseURL" /><xsl:value-of select="$msID" />/<xsl:value-of select="$image" />/full/full/0/default.jpg",
155+
"@id": "<xsl:value-of select="$baseURL" /><xsl:value-of select="$image" />/full/full/0/default.jpg",
150156
"@type": "dctypes:Image",
151157
"format": "image/jpeg",
152158
"height": <xsl:value-of select="$height" />,
153159
"width": <xsl:value-of select="$width" />,
154160
"service": {
155161
"@context": "http://iiif.io/api/image/2/context.json",
156-
"@id": "<xsl:value-of select="$baseURL" /><xsl:value-of select="$msID" />/<xsl:value-of select="$image" />",
162+
"@id": "<xsl:value-of select="$baseURL" /><xsl:value-of select="$image" />",
157163
"profile": "http://iiif.io/api/image/2/level1.json"
158164
}
159165
}

0 commit comments

Comments
 (0)