From 819f3b6415bced4948803a3db8217fcfcbdf0425 Mon Sep 17 00:00:00 2001
From: David Maus <maus@hab.de>
Date: Fri, 6 Oct 2017 10:37:58 +0200
Subject: [PATCH] Prototyp Static Repository

---
 Makefile                                     |  4 ++
 resources/xproc/repertorium/oais-resolve.xsl | 21 ++++++++
 resources/xproc/repertorium/oais.xpl         | 40 ++++++++++++++++
 resources/xproc/repertorium/oais.xsl         | 50 ++++++++++++++++++++
 4 files changed, 115 insertions(+)
 create mode 100644 resources/xproc/repertorium/oais-resolve.xsl
 create mode 100644 resources/xproc/repertorium/oais.xpl
 create mode 100644 resources/xproc/repertorium/oais.xsl

diff --git a/Makefile b/Makefile
index 27390d0d..94a423bd 100644
--- a/Makefile
+++ b/Makefile
@@ -30,5 +30,9 @@ deploy:
 sitemap:
 	calabash.cmd -i resources/mets.xml -o public/sitemap.xml resources/xproc/sitemap.xpl
 
+.PHONY: repository
+repository:
+	calabash.cmd -o public/repertorium.xml resources/xproc/repertorium/oais.xpl
+
 .PHONY: publish
 publish: mets linkmap sitemap solr deploy
diff --git a/resources/xproc/repertorium/oais-resolve.xsl b/resources/xproc/repertorium/oais-resolve.xsl
new file mode 100644
index 00000000..7c7fcbc3
--- /dev/null
+++ b/resources/xproc/repertorium/oais-resolve.xsl
@@ -0,0 +1,21 @@
+<xsl:transform version="2.0"
+               xpath-default-namespace="http://www.tei-c.org/ns/1.0"
+               xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:template match="node() | @*">
+    <xsl:copy>
+      <xsl:apply-templates select="node() | @*"/>
+    </xsl:copy>
+  </xsl:template>
+
+  <xsl:template match="@ref[starts-with(., '../../register.xml')]">
+    <xsl:if test="document(.)/idno[@type = 'URI']">
+      <xsl:attribute name="ref" select="document(.)/idno[@type = 'URI']"/>
+    </xsl:if>
+  </xsl:template>
+
+  <xsl:template match="ref[ends-with(@target, '.xml')]">
+    <xsl:value-of select="."/>
+  </xsl:template>
+
+</xsl:transform>
diff --git a/resources/xproc/repertorium/oais.xpl b/resources/xproc/repertorium/oais.xpl
new file mode 100644
index 00000000..0e69770e
--- /dev/null
+++ b/resources/xproc/repertorium/oais.xpl
@@ -0,0 +1,40 @@
+<p:declare-step version="1.0"
+                xmlns:c="http://www.w3.org/ns/xproc-step"
+                xmlns:s="http://selbstzeugnisse.hab.de/ns"
+                xmlns:p="http://www.w3.org/ns/xproc">
+
+  <p:import href="library.xpl"/>
+
+  <p:documentation xmlns="http://www.w3.org/1999/xhtml">
+    Repertoriumseinträge in <a href="http://www.openarchives.org/OAI/2.0/guidelines-static-repository.htm"
+    target="_blank">OAI Static Repository</a> zusammenfasen.
+  </p:documentation>
+
+  <p:output port="result" primary="true"/>
+
+  <s:repertorium-einträge/>
+
+  <p:viewport match="c:file">
+    <p:load>
+      <p:with-option name="href" select="concat(base-uri(), /c:file/@name)"/>
+    </p:load>
+    <p:xslt>
+      <p:input port="stylesheet">
+        <p:document href="oais-resolve.xsl"/>
+      </p:input>
+      <p:input port="parameters">
+        <p:empty/>
+      </p:input>
+    </p:xslt>
+  </p:viewport>
+
+  <p:xslt>
+    <p:input port="stylesheet">
+      <p:document href="oais.xsl"/>
+    </p:input>
+    <p:input port="parameters">
+      <p:empty/>
+    </p:input>
+  </p:xslt>
+
+</p:declare-step>
diff --git a/resources/xproc/repertorium/oais.xsl b/resources/xproc/repertorium/oais.xsl
new file mode 100644
index 00000000..c3200c37
--- /dev/null
+++ b/resources/xproc/repertorium/oais.xsl
@@ -0,0 +1,50 @@
+<xsl:transform version="2.0"
+               xpath-default-namespace="http://www.tei-c.org/ns/1.0"
+               xmlns="http://www.openarchives.org/OAI/2.0/static-repository"
+               xmlns:oai="http://www.openarchives.org/OAI/2.0/"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:template match="/">
+    <Repository xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/static-repository http://www.openarchives.org/OAI/2.0/static-repository.xsd">
+      <Identify>
+        <oai:repositoryName>Selbstzeugnisse der Frühen Neuzeit in der Herzog August Bibliothek – Repertorium</oai:repositoryName>
+        <oai:baseURL>http://selbstzeugnisse.hab.de/repertorium.xml</oai:baseURL>
+        <oai:protocolVersion>2.0</oai:protocolVersion>
+        <oai:adminEmail>maus@hab.de</oai:adminEmail>
+        <oai:earliestDatestamp><xsl:value-of select="format-date(current-date(), '[Y]-[M01]-[D01]')"/></oai:earliestDatestamp>
+        <oai:deletedRecord>no</oai:deletedRecord>
+        <oai:granularity>YYYY-MM-DD</oai:granularity>
+      </Identify>
+      <ListMetadataFormats>
+        <oai:metadataFormat>
+          <oai:metadataPrefix>oai_dc</oai:metadataPrefix>
+          <oai:schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</oai:schema>
+          <oai:metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</oai:metadataNamespace>
+        </oai:metadataFormat>
+        <oai:metadataFormat>
+          <oai:metadataPrefix>tei</oai:metadataPrefix>
+          <oai:schema>http://selbstzeugnisse.hab.de/daten/oai-repertorium.xsd</oai:schema>
+          <oai:metadataNamespace>http://www.tei-c.org/ns/1.0</oai:metadataNamespace>
+        </oai:metadataFormat>
+      </ListMetadataFormats>
+      <ListRecords metadataPrefix="tei">
+        <xsl:apply-templates/>
+      </ListRecords>
+    </Repository>
+  </xsl:template>
+
+  <xsl:template match="TEI">
+    <oai:record> 
+      <oai:header>
+        <oai:identifier><xsl:value-of select="concat('oai:selbstzeugnisse.hab.de:', @xml:id)"/></oai:identifier> 
+        <oai:datestamp><xsl:value-of select="format-date(current-date(), '[Y]-[M01]-[D01]')"/></oai:datestamp>
+      </oai:header>
+      <oai:metadata>
+        <xsl:sequence select="."/>
+      </oai:metadata>
+    </oai:record>
+  </xsl:template>
+
+  
+</xsl:transform>
-- 
GitLab