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