diff options
| author | Felix Hanley <felix@userspace.com.au> | 2016-01-26 15:45:03 +0000 |
|---|---|---|
| committer | Felix Hanley <felix@userspace.com.au> | 2016-01-26 15:45:03 +0000 |
| commit | 9badee896f1e4257e12393019720dc3e33b5ef06 (patch) | |
| tree | 6faba8bc3b994ff85d81320dca3e987ba6547e5a | |
| parent | b39283c2419d947a2e662cd347e0987a401c1d28 (diff) | |
| download | lahu-dictionary-9badee896f1e4257e12393019720dc3e33b5ef06.tar.gz lahu-dictionary-9badee896f1e4257e12393019720dc3e33b5ef06.tar.bz2 | |
Clean up XSLT files so I can read them. Add Makefiles
| -rw-r--r-- | Makefile.common | 46 | ||||
| -rw-r--r-- | eng-lhu/Makefile | 42 | ||||
| -rw-r--r-- | lhu-eng/Makefile | 4 | ||||
| -rw-r--r-- | xsl/inc/indent.xsl | 209 | ||||
| -rw-r--r-- | xsl/inc/teiheader2txt.xsl | 512 |
5 files changed, 382 insertions, 431 deletions
diff --git a/Makefile.common b/Makefile.common new file mode 100644 index 0000000..e697f31 --- /dev/null +++ b/Makefile.common @@ -0,0 +1,46 @@ +xsldir ?= $(BASEDIR)/xsl + +DICTFMTFLAGS += --utf8 +XSLTPROCESSOR ?= xsltproc -novalid + +SHELL=bash + +date=$(shell date +%G-%m-%d) + +empty:= +space:= $(empty) $(empty) +version1 := $(shell sed -e '100q;/<edition>/!d;s/.*<edition>\(.*\)<\/edition>.*/\1/;q'\ + $(wildcard $(dictname).tei*)) +version := $(subst $(space),_,$(version1)) + +all: + $(MAKE) dict + +sorted.tei: $(dictname).tei $(xsldir)/sort.xsl + $(XSLTPROCESSOR) $(xsldir)/sort.xsl $< >$@ + +$(dictname).c5: sorted.tei $(xsldir)/tei2c5.xsl \ + $(xsldir)/inc/teientry2txt.xsl \ + $(xsldir)/inc/teiheader2txt.xsl \ + $(xsldir)/inc/indent.xsl + $(XSLTPROCESSOR) --xinclude --stringparam current-date $(date) $(xsldir)/tei2c5.xsl $< >$@ + +%.dict %.index: %.c5 + dictfmt -t --headword-separator %%% $(DICTFMTFLAGS) $* <$< + +%.dz: % + dictzip -k $< + +%.tar.gz: %.dict.dz %.index + tar czf $*.tar.gz $*.dict.dz $*.index + +dict: $(dictname).tar.gz + +clean: + rm -f $(dictname).index $(dictname).dict + rm -f $(dictname).c5 $(dictname).dict.dz + rm -f $(dictname).tar.gz sorted.tei + +.DELETE_ON_ERROR: + +.PHONY: all clean diff --git a/eng-lhu/Makefile b/eng-lhu/Makefile index e5e107d..7c74881 100644 --- a/eng-lhu/Makefile +++ b/eng-lhu/Makefile @@ -1,44 +1,4 @@ BASEDIR ?= .. -xsldir ?= $(BASEDIR)/xsl dictname ?= $(shell basename "$(shell pwd)") -DICTFMTFLAGS += --utf8 -XSLTPROCESSOR ?= xsltproc -novalid - -SHELL=bash - -date=$(shell date +%G-%m-%d) - -empty:= -space:= $(empty) $(empty) -version1 := $(shell sed -e '100q;/<edition>/!d;s/.*<edition>\(.*\)<\/edition>.*/\1/;q'\ - $(wildcard $(dictname).tei*)) -version := $(subst $(space),_,$(version1)) - -all: - $(MAKE) dict - -$(dictname).c5: $(dictname).tei $(xsldir)/tei2c5.xsl \ - $(xsldir)/inc/teientry2txt.xsl \ - $(xsldir)/inc/teiheader2txt.xsl \ - $(xsldir)/inc/indent.xsl - $(XSLTPROCESSOR) --xinclude --stringparam current-date $(date) $(xsldir)/tei2c5.xsl $< >$@ - -%.dict %.index: %.c5 - dictfmt -t --headword-separator %%% $(DICTFMTFLAGS) $* <$< - -%.dz: % - dictzip -k $< - -%.tar.gz: %.dict.dz %.index - tar czf $*.tar.gz $*.dict.dz $*.index - -dict: $(dictname).tar.gz - -clean: - rm -f $(dictname).index $(dictname).dict - rm -f $(dictname).c5 $(dictname).dict.dz - -# .DELETE_ON_ERROR: - -.PHONY: all clean +include ../Makefile.common diff --git a/lhu-eng/Makefile b/lhu-eng/Makefile new file mode 100644 index 0000000..7c74881 --- /dev/null +++ b/lhu-eng/Makefile @@ -0,0 +1,4 @@ +BASEDIR ?= .. +dictname ?= $(shell basename "$(shell pwd)") + +include ../Makefile.common diff --git a/xsl/inc/indent.xsl b/xsl/inc/indent.xsl index d917a31..db742a8 100644 --- a/xsl/inc/indent.xsl +++ b/xsl/inc/indent.xsl @@ -1,133 +1,102 @@ <?xml version='1.0' encoding='UTF-8'?> -<xsl:stylesheet - xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> - <!-- Helper functions to manage indentation --> + <!-- This is the template intended to be called from outside --> + <xsl:template name="format"> + <!-- The text to be formatted nicely --> + <xsl:param name="txt"/> + <!-- A number giving the column width in which txt is to be formatted indented by $start spaces --> + <xsl:param name="width" select="78"/> + <!-- A number giving the columns the txt is to be indented --> + <xsl:param name="start" select="0"/> - <!-- You need at least Version 1.0 of Sablotron from August 8, 2003 - (ChangeLog says "fixed a bug of default NS in imported/included templates") - if you get error messages like: - - Error [code:52] [URI:file:tools/xsl/inc/teiheader2txt.xsl] [line:10] - [node:element '<xsl:call-template>'] called nonexistent rule 'format' - - This bug appears at least in sabcmd 0.98 (April 7, 2003). - --> - - <!-- This is the template intended to be called from outside --> - <xsl:template name="format"> - <!-- The text to be formatted nicely --> - <xsl:param name="txt"/> - <!-- A number giving the column width in which txt is to be formatted - indented by $start spaces --> - <xsl:param name="width" select="78"/> - <!-- A number giving the columns the txt is to be indented --> - <xsl:param name="start" select="0"/> - - <xsl:choose> - <!-- Last Line --> - <xsl:when test="string-length($txt) < $width -$start"> - <xsl:value-of select="$txt"/> - <xsl:text> </xsl:text> - </xsl:when> + <xsl:choose> + <!-- Last Line --> + <xsl:when test="string-length($txt) < $width -$start"> + <xsl:value-of select="$txt"/> + <xsl:text> </xsl:text> + </xsl:when> - <!-- substring() of a NULL string would be bad --> - <xsl:when test="$txt"> - <!-- Find the word boundary of the last word that completely fits on the current line --> - <xsl:variable name="real-width"> - <xsl:call-template name="space-backward"> - <xsl:with-param select="$txt" name="txt"/> - <xsl:with-param select="$width - $start" name="width"/> - <xsl:with-param select="$start" name="start"/> - <xsl:with-param name="def"> - <xsl:call-template name="space-forward"> - <xsl:with-param select="$txt" name="txt"/> - <xsl:with-param select="$width - $start" name="width"/> - <xsl:with-param select="$start" name="start"/> - </xsl:call-template> - </xsl:with-param> - </xsl:call-template> - </xsl:variable> - <!-- Output current line --> - <xsl:value-of select="substring($txt, 1, $real-width)"/> - <xsl:text> </xsl:text> - <!-- Indent the next line --> - <xsl:value-of select="substring(' ', 1, $start)"/> - <!-- Recursively call myself --> - <xsl:call-template name="format"> - <xsl:with-param select="substring($txt, $real-width + 1)" name="txt"/> - <xsl:with-param select="$width" name="width"/> - <xsl:with-param select="$start" name="start"/> - </xsl:call-template> - </xsl:when> - </xsl:choose> - </xsl:template> + <!-- substring() of a NULL string would be bad --> + <xsl:when test="$txt"> + <!-- Find the word boundary of the last word that completely fits on the current line --> + <xsl:variable name="real-width"> + <xsl:call-template name="space-backward"> + <xsl:with-param select="$txt" name="txt"/> + <xsl:with-param select="$width - $start" name="width"/> + <xsl:with-param select="$start" name="start"/> + <xsl:with-param name="def"> + <xsl:call-template name="space-forward"> + <xsl:with-param select="$txt" name="txt"/> + <xsl:with-param select="$width - $start" name="width"/> + <xsl:with-param select="$start" name="start"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + <!-- Output current line --> + <xsl:value-of select="substring($txt, 1, $real-width)"/> + <xsl:text> </xsl:text> + <!-- Indent the next line --> + <xsl:value-of select="substring(' ', 1, $start)"/> + <!-- Recursively call myself --> + <xsl:call-template name="format"> + <xsl:with-param select="substring($txt, $real-width + 1)" name="txt"/> + <xsl:with-param select="$width" name="width"/> + <xsl:with-param select="$start" name="start"/> + </xsl:call-template> + </xsl:when> + </xsl:choose> + </xsl:template> - <!-- This template returns a number, (0 <= return value <= $width) or $def. - It seems to look for the column of the last space in $txt, smaller than $width. - If no space found, $def is returned. --> - <xsl:template name="space-backward"> - <xsl:param name="txt"/> - <xsl:param name="width"/> - <xsl:param name="def"/> - <xsl:param name="start"/> - <xsl:choose> - <xsl:when test="$width = 0"> - <xsl:value-of select="$def"/> - </xsl:when> - <xsl:otherwise> + <xsl:template name="space-backward"> + <xsl:param name="txt"/> + <xsl:param name="width"/> + <xsl:param name="def"/> + <xsl:param name="start"/> <xsl:choose> - <xsl:when test="substring($txt, $width, 1) = ' '"> - <xsl:value-of select="$width"/> - </xsl:when> - <xsl:otherwise> - <xsl:call-template name="space-backward"> - <xsl:with-param select="$txt" name="txt"/> - <xsl:with-param select="$width - 1" name="width"/> - <xsl:with-param select="$def" name="def"/> - </xsl:call-template> - </xsl:otherwise> + <xsl:when test="$width = 0"> + <xsl:value-of select="$def"/> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="substring($txt, $width, 1) = ' '"> + <xsl:value-of select="$width"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="space-backward"> + <xsl:with-param select="$txt" name="txt"/> + <xsl:with-param select="$width - 1" name="width"/> + <xsl:with-param select="$def" name="def"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> </xsl:choose> - </xsl:otherwise> - </xsl:choose> - </xsl:template> + </xsl:template> - <!-- This template returns a number ($width <= return value <= string-length($txt)). - It seems to look for the column of the next space in $txt after $width. If no - space found, string-length($txt) is returned. It does primitive recursion over $width. --> - <xsl:template name="space-forward"> - <xsl:param name="txt"/> - <xsl:param name="width"/> - <xsl:choose> - <xsl:when test="$width >= string-length($txt)"> - <xsl:value-of select="string-length($txt)"/> - </xsl:when> - <xsl:otherwise> + <xsl:template name="space-forward"> + <xsl:param name="txt"/> + <xsl:param name="width"/> <xsl:choose> - <xsl:when test="substring($txt, $width, 1) = ' '"> - <xsl:value-of select="$width"/> - </xsl:when> - <xsl:otherwise> - <xsl:call-template name="space-forward"> - <xsl:with-param select="$txt" name="txt"/> - <xsl:with-param select="$width + 1" name="width"/> - </xsl:call-template> - </xsl:otherwise> + <xsl:when test="$width >= string-length($txt)"> + <xsl:value-of select="string-length($txt)"/> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="substring($txt, $width, 1) = ' '"> + <xsl:value-of select="$width"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="space-forward"> + <xsl:with-param select="$txt" name="txt"/> + <xsl:with-param select="$width + 1" name="width"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> </xsl:choose> - </xsl:otherwise> - </xsl:choose> - </xsl:template> - - <!-- Use the 'format' template per default for outputting text nodes - - <xsl:template match="text()"> - <xsl:call-template name="format"> - <xsl:with-param name="txt" select="."/> - <xsl:with-param name="width" select="70"/> - <xsl:with-param name="start" select="0"/> - </xsl:call-template> - </xsl:template> - --> + </xsl:template> </xsl:stylesheet> - diff --git a/xsl/inc/teiheader2txt.xsl b/xsl/inc/teiheader2txt.xsl index a3a17a0..ac0a41c 100644 --- a/xsl/inc/teiheader2txt.xsl +++ b/xsl/inc/teiheader2txt.xsl @@ -1,278 +1,250 @@ <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" - xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:xd="http://www.pnp-software.com/XSLTdoc"> - - <xsl:import href="indent.xsl"/> - - <!-- Width of display, so indendation can be done nicely --> - <xsl:param name="width" select="75"/> - <!-- Has to come from the shell, as XSLT/XPath 1.0 provide no - function to get current time/date --> - <xsl:param name="current-date"/> - <xsl:variable name="stylesheet-header_svnid">$Id: teiheader2txt.xsl 1095 2011-01-06 14:57:17Z bansp$</xsl:variable> - - <!-- Using this stylesheet with Sablotron requires a version >=0.95, - because xsl:strip-space was implemented from that version on --> - <!--<xsl:strip-space elements="teiHeader fileDesc titleStmt respStmt editionStmt publicationStmt seriesStmt notesStmt revisionDesc TEI.2 TEI p sourceDesc availability encodingDesc"/>--> - <xsl:strip-space elements="*"/> - - <!-- the addition of P5 stuff relies on the absolute complementarity between - null-spaced elements (P4) and elements in the TEI namespace (P5) --> - - <!-- For transforming the teiHeader --> - - <xsl:template match="tei:titleStmt"> - <xsl:value-of select="tei:title"/> - <xsl:text>

</xsl:text> - <xsl:for-each select="tei:respStmt"> - <xsl:value-of select="tei:resp"/>: <xsl:value-of select="tei:name"/> - <xsl:text>
</xsl:text> - </xsl:for-each> - <xsl:text>
</xsl:text> - </xsl:template> - - <!-- editionStmt consists of <edition/> followed by (respStmt)* --> - <xsl:template match="tei:editionStmt"> - <xsl:text>Edition: </xsl:text> - <xsl:apply-templates select="tei:edition"/> - <xsl:text>
</xsl:text> - - <xsl:if test="tei:respStmt"> - <xsl:for-each select="tei:respStmt"> + xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:xd="http://www.pnp-software.com/XSLTdoc"> + + <xsl:import href="indent.xsl"/> + + <!-- Width of display, so indendation can be done nicely --> + <xsl:param name="width" select="75"/> + <xsl:param name="current-date"/> + + <xsl:strip-space elements="*"/> + + + <!-- For transforming the teiHeader --> + + <xsl:template match="tei:titleStmt"> + <xsl:value-of select="tei:title"/> + <xsl:text>

</xsl:text> + <xsl:for-each select="tei:respStmt"> + <xsl:value-of select="tei:resp"/>: <xsl:value-of select="tei:name"/> + <xsl:text>
</xsl:text> + </xsl:for-each> + <xsl:text>
</xsl:text> + </xsl:template> + + <!-- editionStmt consists of <edition/> followed by (respStmt)* --> + <xsl:template match="tei:editionStmt"> + <xsl:text>Edition: </xsl:text> + <xsl:apply-templates select="tei:edition"/> + <xsl:text>
</xsl:text> + + <xsl:if test="tei:respStmt"> + <xsl:for-each select="tei:respStmt"> + <xsl:call-template name="format"> + <xsl:with-param name="txt" select="normalize-space(concat(tei:name, ': ', tei:resp))"/> + <xsl:with-param name="width" select="$width"/> + <xsl:with-param name="start" select="string-length(tei:name) + 3"/> + </xsl:call-template> + </xsl:for-each> + <xsl:text>
</xsl:text> + </xsl:if> + </xsl:template> + + <xsl:template match="tei:extent"> + <xsl:text>Size: </xsl:text> + <xsl:value-of select="."/> + <xsl:text>

</xsl:text> + </xsl:template> + + <xd:doc>I understand this is needed for cases where we merely redistribute stuff.</xd:doc> + <xsl:template match="tei:publisher"> + <xsl:value-of select="concat('Publisher: ',.,'.
')"/> + </xsl:template> + + <xd:doc>For upstream publishers, I guess.</xd:doc> + <xsl:template match="tei:publicationStmt/tei:date"> + <xsl:value-of select="concat('Publication date: ',.,'.
')"/> + </xsl:template> + + <xd:doc>Shouldn't this always be the FreeDict URL?</xd:doc> + <xsl:template match="tei:pubPlace"> + <xsl:value-of select="concat('Published at: ',tei:ref,'
')"/> + </xsl:template> + + <xsl:template match="tei:availability"> + <xsl:variable name="spaced_ps"> + <xsl:for-each select="tei:p"> + <xsl:value-of select="concat(.,' ')"/> + </xsl:for-each> + </xsl:variable> + <xsl:text>

Availability:

 </xsl:text> <xsl:call-template name="format"> - <xsl:with-param name="txt" select="normalize-space(concat(tei:name, ': ', tei:resp))"/> - <xsl:with-param name="width" select="$width"/> - <xsl:with-param name="start" select="string-length(tei:name) + 3"/> + <xsl:with-param name="txt" select="normalize-space($spaced_ps)"/> + <xsl:with-param name="width" select="$width"/> + <xsl:with-param name="start" select="2"/> </xsl:call-template> - </xsl:for-each> - <xsl:text>
</xsl:text> - </xsl:if> - </xsl:template> - - <xsl:template match="tei:extent"> - <xsl:text>Size: </xsl:text> - <xsl:value-of select="."/> - <xsl:text>

</xsl:text> - </xsl:template> - - <xd:doc>I understand this is needed for cases where we merely redistribute stuff.</xd:doc> - <xsl:template match="tei:publisher"> - <xsl:value-of select="concat('Publisher: ',.,'.
')"/> - </xsl:template> - - <xd:doc>For upstream publishers, I guess.</xd:doc> - <xsl:template match="tei:publicationStmt/tei:date"> - <xsl:value-of select="concat('Publication date: ',.,'.
')"/> - </xsl:template> - - <xd:doc>Shouldn't this always be the FreeDict URL?</xd:doc> - <xsl:template match="tei:pubPlace"> - <xsl:value-of select="concat('Published at: ',tei:ref,'
')"/> - </xsl:template> - - <xd:doc>Id #, currently we only use the SVN Id.</xd:doc> - <xsl:template match="tei:idno"> - <xsl:value-of select="concat('ID# (',@type,'): ',.,'
')"/> - </xsl:template> - - - <xsl:template match="tei:availability"> - <xsl:variable name="spaced_ps"> - <xsl:for-each select="tei:p"> - <xsl:value-of select="concat(.,' ')"/> - </xsl:for-each> - </xsl:variable> - <xsl:text>

Availability:

 </xsl:text> - <xsl:call-template name="format"> - <xsl:with-param name="txt" select="normalize-space($spaced_ps)"/> - <xsl:with-param name="width" select="$width"/> - <xsl:with-param name="start" select="2"/> - </xsl:call-template> - <xsl:text>
</xsl:text> - </xsl:template> - - <xsl:template match="tei:publicationStmt"> - <xsl:apply-templates/> - <xsl:text>
</xsl:text> - </xsl:template> - - <xsl:template match="tei:seriesStmt"> - <xsl:text>Series: </xsl:text> - <xsl:value-of select="tei:title"/> - <xsl:text>

</xsl:text> - </xsl:template> - - <xsl:template match="tei:notesStmt"> - <xsl:text>Notes:

</xsl:text> - <xsl:apply-templates/> - <xsl:text>
</xsl:text> - </xsl:template> - - <xsl:template match="tei:teiHeader//tei:note"> - <xsl:text> * </xsl:text> - <xsl:if test="@type and (@type = 'status')"> - <xsl:text>Database Status: </xsl:text> - </xsl:if> - <xsl:call-template name="format"> - <xsl:with-param name="txt" select="normalize-space()"/> - <xsl:with-param name="width" select="$width"/> - <xsl:with-param name="start" select="3"/> - </xsl:call-template> - <xsl:text>
</xsl:text> - </xsl:template> - - <xsl:template match="tei:sourceDesc"> - <xsl:text>Source(s):

 </xsl:text> - <xsl:variable name="sdtext"> - <xsl:apply-templates/> - </xsl:variable> - <xsl:call-template name="format"> - <xsl:with-param name="txt" select="normalize-space($sdtext)"/> - <xsl:with-param name="width" select="$width"/> - <xsl:with-param name="start" select="2"/> - </xsl:call-template> - <xsl:text>
</xsl:text> - </xsl:template> - - <xsl:template match="tei:p"> - <xsl:text> </xsl:text> - <xsl:apply-templates/> - <xsl:text>

</xsl:text> - </xsl:template> - - <xsl:template match="tei:ptr"> - <xsl:value-of select="@target"/> - </xsl:template> - - <xsl:template match="tei:projectDesc"> - <xsl:text>The Project:

 </xsl:text> - <xsl:call-template name="format"> - <xsl:with-param name="txt" select="normalize-space()"/> - <xsl:with-param name="width" select="$width"/> - <xsl:with-param name="start" select="2"/> - </xsl:call-template> - <xsl:text>
</xsl:text> - </xsl:template> - - <xsl:template match="tei:revisionDesc"> - <xsl:text>Changelog:

</xsl:text> - <xsl:if test="string-length($current-date)>0"> - <!-- Add conversion timestamp --> - <xsl:text> * </xsl:text> - <xsl:value-of select="$current-date"/> - <xsl:text>: Conversion of the TEI source file into c5 format.</xsl:text> - <xsl:text>
 Stylesheet ID: </xsl:text> - <xsl:value-of select="$stylesheet-header_svnid"/> - <xsl:text>
</xsl:text> - </xsl:if> - <xsl:apply-templates/> - </xsl:template> - - <xsl:template match="tei:change"> - <xsl:variable name="when"> - <xsl:choose> - <xsl:when test="tei:date"> - <xsl:value-of select="tei:date"/> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="@when"/> - </xsl:otherwise> - </xsl:choose> - </xsl:variable> - <xsl:variable name="who"> - <xsl:choose> - <xsl:when test="tei:name"> - <xsl:value-of select="tei:name[1]"/> - </xsl:when> - <xsl:when test="@who"> - <xsl:variable name="who-attr" select="@who"/> - <xsl:variable name="name-elem" - select="/tei:TEI/tei:teiHeader/tei:fileDesc/tei:titleStmt/tei:respStmt/tei:name[@xml:id = substring-after($who-attr,'#')]"/> - <xsl:choose> - <xsl:when test="$name-elem"> - <xsl:value-of select="$name-elem"/> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="$who-attr"/> - </xsl:otherwise> - </xsl:choose> - </xsl:when> - </xsl:choose> - </xsl:variable> - <xsl:value-of select="concat(' * ',$when,' ',$who)"/> - - <!-- this is for the version information --> - <xsl:if test="@n"> - <xsl:text> </xsl:text> - <xsl:value-of select="concat('ver. ',@n)"/> - </xsl:if> - <xsl:text>:
</xsl:text> - <xsl:apply-templates mode="changelog"/> - - </xsl:template> - - <!-- we pull these in separately --> - <xsl:template mode="changelog" match="tei:*[1][local-name() = 'date']"/> - <xsl:template mode="changelog" match="tei:name[1]"/> - - <xsl:template mode="changelog" match="text()[string-length(normalize-space()) > 0]"> - <xsl:variable name="stuff"> - <xsl:choose> - <xsl:when test="substring(.,1,2)=': '"> - <xsl:value-of select="substring-after(.,': ')"/> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="."/> - </xsl:otherwise> - </xsl:choose> - </xsl:variable> - <xsl:call-template name="format"> - <xsl:with-param name="txt" select="concat(' ',normalize-space($stuff))"/> - <xsl:with-param name="width" select="$width"/> - <xsl:with-param name="start" select="3"/> - </xsl:call-template> - </xsl:template> - - <!-- this is a horribly unreadable template that should definitely be rewritten --> -<!-- if the <change> element has all three attrs: @n, @who and @when set, do not process <head> --> - <xsl:template match="tei:list" mode="changelog"> - <xsl:variable name="indent" select="count(ancestor-or-self::tei:list)*3"/> - <xsl:if test="tei:head and not(string-length(ancestor::tei:change[1]/@n) > 0 and - string-length(ancestor::tei:change[1]/@who) > 0 and - string-length(ancestor::tei:change[1]/@when) > 0)"> - <xsl:call-template name="format"> - <xsl:with-param name="txt" select="concat(' ',normalize-space(tei:head))"/> - <xsl:with-param name="width" select="$width"/> - <xsl:with-param name="start" select="$indent"/> - </xsl:call-template> - <!--<xsl:text>
</xsl:text>--> - </xsl:if> - <xsl:for-each select="tei:item"> - <xsl:variable name="item-content"> - <xsl:choose> - <xsl:when test="tei:list"> - <xsl:apply-templates select="tei:list/preceding-sibling::tei:*|text()"/> - <!-- this is obviously a kludge: I assume that a nested <list/> is always the last element in an <item/> --> - </xsl:when> - <xsl:otherwise> - <xsl:apply-templates select="tei:*|text()"/> - </xsl:otherwise> - </xsl:choose> - </xsl:variable> - <xsl:call-template name="format"> - <xsl:with-param name="txt" - select="concat(substring(' ', 1, $indent),'* ',normalize-space($item-content))"/> - <xsl:with-param name="width" select="$width"/> - <xsl:with-param name="start" select="$indent+2"/> - </xsl:call-template> - <!--<xsl:text>
</xsl:text>--> - <xsl:if test="tei:list"> - <xsl:apply-templates select="tei:list"/> - </xsl:if> - </xsl:for-each> - </xsl:template> - <!-- added by Denis on 2015 0708 --> + <xsl:text>
</xsl:text> + </xsl:template> + + <xsl:template match="tei:publicationStmt"> + <xsl:apply-templates/> + <xsl:text>
</xsl:text> + </xsl:template> + + <xsl:template match="tei:seriesStmt"> + <xsl:text>Series: </xsl:text> + <xsl:value-of select="tei:title"/> + <xsl:text>

</xsl:text> + </xsl:template> + + <xsl:template match="tei:notesStmt"> + <xsl:text>Notes:

</xsl:text> + <xsl:apply-templates/> + <xsl:text>
</xsl:text> + </xsl:template> + + <xsl:template match="tei:teiHeader//tei:note"> + <xsl:text> * </xsl:text> + <xsl:if test="@type and (@type = 'status')"> + <xsl:text>Database Status: </xsl:text> + </xsl:if> + <xsl:call-template name="format"> + <xsl:with-param name="txt" select="normalize-space()"/> + <xsl:with-param name="width" select="$width"/> + <xsl:with-param name="start" select="3"/> + </xsl:call-template> + <xsl:text>
</xsl:text> + </xsl:template> + + <xsl:template match="tei:sourceDesc"> + <xsl:text>Source(s):

 </xsl:text> + <xsl:variable name="sdtext"> + <xsl:apply-templates/> + </xsl:variable> + <xsl:call-template name="format"> + <xsl:with-param name="txt" select="normalize-space($sdtext)"/> + <xsl:with-param name="width" select="$width"/> + <xsl:with-param name="start" select="2"/> + </xsl:call-template> + <xsl:text>
</xsl:text> + </xsl:template> + + <xsl:template match="tei:p"> + <xsl:text> </xsl:text> + <xsl:apply-templates/> + <xsl:text>

</xsl:text> + </xsl:template> + + <xsl:template match="tei:ptr"> + <xsl:value-of select="@target"/> + </xsl:template> + + <xsl:template match="tei:revisionDesc"> + <xsl:text>Changelog:

</xsl:text> + <xsl:if test="string-length($current-date)>0"> + <!-- Add conversion timestamp --> + <xsl:text> * </xsl:text> + <xsl:value-of select="$current-date"/> + <xsl:text>: Conversion of the TEI source file into c5 format.</xsl:text> + <xsl:text>
</xsl:text> + </xsl:if> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="tei:change"> + <xsl:variable name="when"> + <xsl:choose> + <xsl:when test="tei:date"> + <xsl:value-of select="tei:date"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@when"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="who"> + <xsl:choose> + <xsl:when test="tei:name"> + <xsl:value-of select="tei:name[1]"/> + </xsl:when> + <xsl:when test="@who"> + <xsl:variable name="who-attr" select="@who"/> + <xsl:variable name="name-elem" + select="/tei:TEI/tei:teiHeader/tei:fileDesc/tei:titleStmt/tei:respStmt/tei:name[@xml:id = substring-after($who-attr,'#')]"/> + <xsl:choose> + <xsl:when test="$name-elem"> + <xsl:value-of select="$name-elem"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$who-attr"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + </xsl:choose> + </xsl:variable> + <xsl:value-of select="concat(' * ',$when,' ',$who)"/> + + <!-- this is for the version information --> + <xsl:if test="@n"> + <xsl:text> </xsl:text> + <xsl:value-of select="concat('ver. ',@n)"/> + </xsl:if> + <xsl:text>:
</xsl:text> + <xsl:apply-templates mode="changelog"/> + + </xsl:template> + + <!-- we pull these in separately --> + <xsl:template mode="changelog" match="tei:*[1][local-name() = 'date']"/> + <xsl:template mode="changelog" match="tei:name[1]"/> + + <xsl:template mode="changelog" match="text()[string-length(normalize-space()) > 0]"> + <xsl:variable name="stuff"> + <xsl:choose> + <xsl:when test="substring(.,1,2)=': '"> + <xsl:value-of select="substring-after(.,': ')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="."/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:call-template name="format"> + <xsl:with-param name="txt" select="concat(' ',normalize-space($stuff))"/> + <xsl:with-param name="width" select="$width"/> + <xsl:with-param name="start" select="3"/> + </xsl:call-template> + </xsl:template> + + <!-- if the 'change' element has all three attrs: @n, @who and @when set, do not process 'head' --> + <xsl:template match="tei:list" mode="changelog"> + <xsl:variable name="indent" select="count(ancestor-or-self::tei:list)*3"/> + <xsl:if test="tei:head and not(string-length(ancestor::tei:change[1]/@n) > 0 and + string-length(ancestor::tei:change[1]/@who) > 0 and + string-length(ancestor::tei:change[1]/@when) > 0)"> + <xsl:call-template name="format"> + <xsl:with-param name="txt" select="concat(' ',normalize-space(tei:head))"/> + <xsl:with-param name="width" select="$width"/> + <xsl:with-param name="start" select="$indent"/> + </xsl:call-template> + <!--<xsl:text>
</xsl:text>--> + </xsl:if> + <xsl:for-each select="tei:item"> + <xsl:variable name="item-content"> + <xsl:choose> + <xsl:when test="tei:list"> + <xsl:apply-templates select="tei:list/preceding-sibling::tei:*|text()"/> + <!-- this is obviously a kludge: I assume that a nested <list/> is always the last element in an <item/> --> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="tei:*|text()"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:call-template name="format"> + <xsl:with-param name="txt" + select="concat(substring(' ', 1, $indent),'* ',normalize-space($item-content))"/> + <xsl:with-param name="width" select="$width"/> + <xsl:with-param name="start" select="$indent+2"/> + </xsl:call-template> + <!--<xsl:text>
</xsl:text>--> + <xsl:if test="tei:list"> + <xsl:apply-templates select="tei:list"/> + </xsl:if> + </xsl:for-each> + </xsl:template> <xsl:template match="tei:tagsDecl"/> <xsl:template match="tei:langUsage"/> |
