XSLT stylesheet: Generalising over time relations
For the extraction of generalisations another script is used, the XSLT implementation is the following, using a baseline parameter to avoid the inclusion of singular relations.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" version="1.0" encoding="utf-8"
omit-xml-declaration="yes" indent="yes"/>
<!-- gen_lex_times.xsl
by Thorsten Trippel
Department of Linguistics and Literary Studies,
Bielefeld University
March 2003
XSL Stylesheet for transforming a set list of time related
annotation entities and grouping them.
A basline is taken as a global parameter.
...
Tested with saxon, xalan,sablotron and xsltproc ;
call from commandline (Linux/Unix) with;
DOS-systems in the appropriate way.
Xalan:
Call with
java -cp /usr/share/java/xalan2.jar
org.apache.xalan.xslt.Process
-in XMLFILE -xsl gen_lex_times.xsl -param baseline 3
Saxon: call with
java -cp /usr/share/java/saxon.jar com.icl.saxon.StyleSheet
XMLFILE gen_lex_times.xsl baseline=3
XSLTPROC:
xsltproc -param baseline 3 gen_lex_times.xsl XMLFILE
Sablotron
sabcmd gen_lex_times.xsl XMLFILE \$baseline=3
Requires XSLT 1.0
-->
<xsl:param name="baseline"/>
<xsl:key name="wordsandrelations"
match="relationpair"
use="concat(baseelement/text(),'_',
compelement/text(),'_',relation/@rel)"/>
<xsl:template match="//struct_rel">
<xsl:element name="lexicon">
<xsl:for-each select="relationpair[
baseelement and
generate-id()=generate-id(
key('wordsandrelations',concat(baseelement,'_',
compelement,'_',relation/@rel))[1])]">
<xsl:if test="count(key('wordsandrelations',
concat(baseelement/text(),'_',
compelement/text(),'_',relation/@rel)))
> $baseline">
<xsl:element name="lexentry">
<xsl:attribute name="number_of_relations">
<xsl:value-of select="count(key('wordsandrelations',
concat(baseelement/text(),'_',
compelement/text(),'_',relation/@rel)))"/>
</xsl:attribute>
<xsl:attribute name="relation">
<xsl:value-of select="relation/@rel"/>
</xsl:attribute>
<xsl:element name="baseelement">
<xsl:value-of select="baseelement"/>
</xsl:element>
<xsl:element name="compelement">
<xsl:value-of select="compelement"/>
</xsl:element>
<xsl:element name="baselayer">
<xsl:value-of select="baselayerid"/>
</xsl:element>
<xsl:element name="complayer">
<xsl:value-of select="complayer"/>
</xsl:element>
</xsl:element>
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>