diff --git a/data/xslt/tei2search_jsonIndex.xsl b/data/xslt/tei2search_jsonIndex.xsl index c76e0230774ca69954a23aea4bae9383cd4cb10a..1163909f3e7606c82794db8fe49ff7689180505a 100644 --- a/data/xslt/tei2search_jsonIndex.xsl +++ b/data/xslt/tei2search_jsonIndex.xsl @@ -16,10 +16,14 @@ xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="xs tei" version="2.0"> <xsl:output method="text" indent="yes" encoding="UTF-8" omit-xml-declaration="yes"/> - <xsl:variable name="br"> + <xsl:variable name="br_pretty_print"> <xsl:text> </xsl:text> </xsl:variable> + <xsl:variable name="br_minify"> + <xsl:text> </xsl:text> + </xsl:variable> + <xsl:variable name="br" select="$br_pretty_print"/> <xsl:strip-space elements="tei:choice"/> <xsl:strip-space elements="tei:l"/> @@ -30,7 +34,7 @@ <xsl:template match="/"> <xsl:variable name="tei" select="current()"/> - <xsl:text>{</xsl:text> + <xsl:text>[</xsl:text> <xsl:value-of select="$br"/> <xsl:for-each select="tei:TEI/tei:text/tei:body//tei:div[@type = 'book']"> <xsl:sort select="@n" data-type="number"/> @@ -39,7 +43,7 @@ <xsl:for-each select=".//tei:l"> <xsl:variable name="l" select="." as="node()"/> - <xsl:text> [</xsl:text> + <xsl:text> {</xsl:text> <xsl:value-of select="$br"/> <!-- Numero du livre --> @@ -55,20 +59,11 @@ <xsl:text>",</xsl:text> <xsl:value-of select="$br"/> - <!-- Lemme --> - <xsl:variable name="lem"> - <xsl:apply-templates mode="lem"/> - </xsl:variable> - <xsl:text> "lem": "</xsl:text> - <xsl:value-of select="normalize-space($lem)"/> - <xsl:text>",</xsl:text> - <xsl:value-of select="$br"/> - <!-- Témoins --> - <xsl:for-each-group select=".//@wit/tokenize(., ' ')" group-by="."> + <xsl:for-each-group select=".//*/@wit/tokenize(., ' ')" group-by="."> <xsl:variable name="witness " select="."/> <xsl:if - test="exists($l//tei:rdg[@wit = $witness and not(@type = 'irrelevant')])"> + test="exists($l//*[contains(@wit, $witness) and not(@type = 'irrelevant')])"> <xsl:variable name="lesson"> <xsl:apply-templates select="$l" mode="witness"> <xsl:with-param name="wit" select="$witness" tunnel="yes"/> @@ -83,31 +78,41 @@ <xsl:text>",</xsl:text> <xsl:value-of select="$br"/> </xsl:if> + <!-- + <xsl:if test="$l_num = '411'"> + <xsl:message>411 - <xsl:value-of select="$witness"/></xsl:message> + </xsl:if> + <xsl:if test="$l_num = '412'"> + <xsl:message terminate="yes"> Debug - Stops for specifiied $l_num</xsl:message> + </xsl:if>--> </xsl:for-each-group> - <xsl:text> ]</xsl:text> + + <!-- Lemme --> + <xsl:variable name="lem"> + <xsl:apply-templates mode="lem"/> + </xsl:variable> + <xsl:text> "lem": "</xsl:text> + <xsl:value-of select="normalize-space($lem)"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="$br"/> + + <!-- Closing Json --> + <xsl:text> }</xsl:text> <xsl:if test="position() < last()"> <xsl:text>,</xsl:text> </xsl:if> <xsl:value-of select="$br"/> </xsl:for-each> </xsl:for-each> - <xsl:text>}</xsl:text> + <xsl:text>]</xsl:text> <xsl:value-of select="$br"/> </xsl:template> - <!-- Templates for lemma version --> - <xsl:template match="tei:app" mode="lem"> - <xsl:apply-templates select="tei:lem" mode="lem"/> - </xsl:template> - - <xsl:template match="tei:lem" mode="lem"> - <xsl:apply-templates mode="#current"/> - </xsl:template> - + <!-- Template for both lemma and witnesses versions --> <xsl:template match=" tei:reg | tei:persName | tei:placeName | tei:orgName | tei:geogName | tei:pc | tei:date | tei:said | tei:subst | tei:add | - tei:num | tei:foreign | tei:hi | tei:quote | tei:title | tei:unclear | + tei:num | tei:foreign | tei:hi | tei:quote | tei:title | tei:unclear | tei:gap" mode="lem witness"> <xsl:apply-templates mode="#current"/> </xsl:template> @@ -116,42 +121,60 @@ <xsl:apply-templates select="tei:reg" mode="#current"/> </xsl:template> - <xsl:template match="tei:metamark | tei:orig | tei:del | tei:note" mode="lem witness"/> - <!-- del à vérifier : que renvoit-on comme résultat de recherche ? --> + <xsl:template match="tei:del" mode="lem witness"> + <!-- del à vérifier : que renvoit-on comme résultat de recherche ? + Pour le moment, <s></s> car mais barré... c'est déjà présent donc peut être renvoyé par la recherche... + mais on pourrait aussi l'enlever en considérant la forme absents du témoin... + cf. vers numéro 411 pour un exemple (rdg wit="#Aix419") --> + <xsl:if test="not(. = '')"> + <xsl:text disable-output-escaping="yes"><s></xsl:text> + <xsl:apply-templates mode="#current"/> + <xsl:text disable-output-escaping="yes"></s></xsl:text> + </xsl:if> + </xsl:template> + + <xsl:template match="tei:metamark | tei:orig | tei:note" mode="lem witness"/> + <!-- Templates for lemma version --> + <xsl:template match="tei:app" mode="lem"> + <xsl:apply-templates select="tei:lem" mode="lem"/> + </xsl:template> + + <xsl:template match="tei:lem" mode="lem"> + <xsl:apply-templates mode="#current"/> + </xsl:template> + <!-- Templates for a specific witness version --> <xsl:template match="tei:app" mode="witness"> <xsl:apply-templates mode="#current"/> </xsl:template> - + <xsl:template match="tei:l" mode="witness"> <xsl:param name="wit" tunnel="yes"/> <xsl:apply-templates mode="witness"/> </xsl:template> - <xsl:template match="tei:lem" mode="witness"> + <xsl:template match="tei:lem | tei:rdg" mode="witness"> <xsl:param name="wit" tunnel="yes"/> - <xsl:message> - lem <xsl:value-of select="$wit"/> - </xsl:message> - <xsl:if test="not(following-sibling::tei:rdg[@wit = $wit])"> + <xsl:if test=" + contains(@wit, $wit) + or ( + not(following::*[contains(@wit, $wit)]) + and not(preceding::*[contains(@wit, $wit)]) + )"> + <!-- todo: and not(.//contains(@wit, $wit)) --> <xsl:apply-templates mode="witness"/> </xsl:if> </xsl:template> - <xsl:template match="tei:rdg" mode="witness"> + <xsl:template match="tei:rdgGrp" mode="witness"> <xsl:param name="wit" tunnel="yes"/> - <xsl:message> - rdg <xsl:value-of select="$wit"/> - </xsl:message> - <xsl:if test="@wit = $wit"> - <xsl:apply-templates mode="witness"/> - </xsl:if> + <xsl:apply-templates mode="witness"/> </xsl:template> - - <xsl:template match="tei:rdgGrp[@type='irrelevant']" mode="witness"/> + + <xsl:template match="tei:rdgGrp[@type = 'irrelevant']" mode="witness"/> <!-- DEBUG SECTION - Templates used to show warnings if unexpected elements or attributes --> <xsl:template match="tei:*" mode="#all">