Skip to content

Commit fddfa9b

Browse files
authored
Merge pull request kitodo#5842 from matthias-ronge/patch-79
Complete DFG-Viewer ruleset's XSLT file
2 parents 1f63066 + d8bdb14 commit fddfa9b

File tree

1 file changed

+127
-5
lines changed

1 file changed

+127
-5
lines changed

Kitodo/src/main/resources/xslt/dfg-viewer.xsl

+127-5
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,135 @@
1111
* GPL3-License.txt file that was distributed with this source code.
1212
*
1313
-->
14-
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
14+
<xsl:stylesheet version="2.0"
15+
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
16+
xmlns:mets="http://www.loc.gov/METS/"
17+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
18+
xmlns:mods="http://www.loc.gov/mods/v3"
19+
xmlns:dv="http://dfg-viewer.de/"
20+
xmlns:kitodo="http://meta.kitodo.org/v1/">
1521
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
22+
<xsl:strip-space elements="*"/>
1623

17-
<!-- This is an identity template - it copies everything that doesn't match another template -->
18-
<xsl:template match="@* | node()">
19-
<xsl:copy>
24+
<!-- mets:mets -->
25+
<xsl:template match="mets:mets">
26+
<mets:mets>
2027
<xsl:apply-templates select="@* | node()"/>
21-
</xsl:copy>
28+
</mets:mets>
2229
</xsl:template>
30+
31+
<!-- mets:metsHdr -->
32+
<xsl:template match="mets:metsHdr">
33+
<mets:metsHdr>
34+
<xsl:copy-of select="@*"/>
35+
<xsl:copy-of select="node()"/>
36+
</mets:metsHdr>
37+
</xsl:template>
38+
39+
<!-- mets:fileSec -->
40+
<xsl:template match="mets:fileSec">
41+
<mets:metsHdr>
42+
<xsl:copy-of select="@*"/>
43+
<xsl:copy-of select="node()"/>
44+
</mets:metsHdr>
45+
</xsl:template>
46+
47+
<!-- mets:structMap -->
48+
<xsl:template match="mets:structMap">
49+
<mets:structMap>
50+
<xsl:copy-of select="@*"/>
51+
<!-- TYPE='physSequence' in the physical root div is required by Kitodo.Presentation -->
52+
<xsl:for-each select="mets:div">
53+
<xsl:element name="mets:div">
54+
<xsl:attribute name="TYPE">physSequence</xsl:attribute>
55+
<xsl:copy-of select="@*"/>
56+
<xsl:copy-of select="node()"/>
57+
</xsl:element>
58+
</xsl:for-each>
59+
</mets:structMap>
60+
</xsl:template>
61+
62+
<!-- mets:structLink -->
63+
<xsl:template match="mets:structLink">
64+
<mets:structLink>
65+
<xsl:copy-of select="@*"/>
66+
<xsl:copy-of select="node()"/>
67+
</mets:structLink>
68+
</xsl:template>
69+
70+
<!-- mets:amdSec -->
71+
<xsl:template match="mets:amdSec">
72+
<mets:amdSec ID="AMD">
73+
<!-- mets:rightsMD -->
74+
<xsl:if test=".//@name='ownerSiteURL' or .//@name='owner' or .//@name='ownerLogo' or .//@name='ownerContact'">
75+
<mets:rightsMD ID="RIGHTS">
76+
<mets:mdWrap MDTYPE="OTHER" MIMETYPE="text/xml" OTHERMDTYPE="DVRIGHTS">
77+
<mets:xmlData>
78+
<dv:rights>
79+
<xsl:for-each select=".//kitodo:metadata[@name]">
80+
<xsl:element name="dv:{@name}"><xsl:value-of select="./text()"/></xsl:element>
81+
</xsl:for-each>
82+
</dv:rights>
83+
</mets:xmlData>
84+
</mets:mdWrap>
85+
</mets:rightsMD>
86+
</xsl:if>
87+
<!-- mets:digiprovMD -->
88+
<xsl:if test=".//@name='presentation' or .//@name='reference'">
89+
<mets:digiprovMD ID="DIGIPROV">
90+
<mets:mdWrap MDTYPE="OTHER" MIMETYPE="text/xml" OTHERMDTYPE="DVLINKS">
91+
<mets:xmlData>
92+
<dv:links>
93+
<xsl:for-each select=".//kitodo:metadata[@name]">
94+
<xsl:element name="dv:{@name}"><xsl:value-of select="./text()"/></xsl:element>
95+
</xsl:for-each>
96+
</dv:links>
97+
</mets:xmlData>
98+
</mets:mdWrap>
99+
</mets:digiprovMD>
100+
</xsl:if>
101+
</mets:amdSec>
102+
</xsl:template>
103+
104+
<!-- mets:dmdSec -->
105+
<xsl:template match="mets:dmdSec">
106+
<mets:dmdSec>
107+
<xsl:copy-of select="@*"/>
108+
<mets:mdWrap MDTYPE="MODS">
109+
<mets:xmlData>
110+
<mods:mods xmlns:mods="http://www.loc.gov/mods/v3">
111+
<xsl:apply-templates />
112+
</mods:mods>
113+
</mets:xmlData>
114+
</mets:mdWrap>
115+
</mets:dmdSec>
116+
</xsl:template>
117+
118+
<!-- kitodo:metadata -->
119+
<xsl:template match="kitodo:metadata">
120+
<xsl:element name="mods:{@name}"><xsl:value-of select="normalize-space()"/></xsl:element>
121+
</xsl:template>
122+
123+
<!-- kitodo:metadataGroup -->
124+
<xsl:template match="kitodo:metadataGroup">
125+
<xsl:element name="mods:{@name}">
126+
<xsl:if test="child::*[@name='value']">
127+
<xsl:for-each select="child::*">
128+
<xsl:if test="./@name!='value'">
129+
<xsl:attribute name="{./@name}"><xsl:value-of select="./text()"/></xsl:attribute>
130+
</xsl:if>
131+
</xsl:for-each>
132+
<xsl:value-of select="normalize-space(child::*[@name='value'])"/>
133+
</xsl:if>
134+
<xsl:if test="not(child::*[@name='value'])">
135+
<xsl:apply-templates />
136+
</xsl:if>
137+
</xsl:element>
138+
</xsl:template>
139+
140+
<!-- delete unmapped text -->
141+
<xsl:template match="text()"/>
142+
143+
<!-- delete XML Schema locations -->
144+
<xsl:template match="@xsi:schemaLocation"/>
23145
</xsl:stylesheet>

0 commit comments

Comments
 (0)