diff --git a/util/fix-ruleset.xsl b/util/fix-ruleset.xsl
new file mode 100644
index 0000000000000000000000000000000000000000..42768181af250b026d483cd9742005f04fc1c692
--- /dev/null
+++ b/util/fix-ruleset.xsl
@@ -0,0 +1,18 @@
+<xsl:transform version="2.0"
+               exclude-result-prefixes="#all"
+               xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+               xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+               xmlns:mets="http://www.loc.gov/METS/"
+               xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:variable name="struct" select="doc('http://uri.hab.de/ontology/diglib-struct.rdf')"/>
+
+  <xsl:template match="node() | @*">
+    <xsl:copy><xsl:apply-templates select="node() | @*"/></xsl:copy>
+  </xsl:template>
+
+  <xsl:template match="@TYPE[. = $struct//rdfs:Class/rdfs:label]">
+    <xsl:attribute name="TYPE" select="substring-after($struct//rdfs:Class[rdfs:label = current()]/@rdf:about, '#')"/>
+  </xsl:template>
+
+</xsl:transform>