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() &lt; 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">&lt;s></xsl:text>
+            <xsl:apply-templates mode="#current"/>
+            <xsl:text disable-output-escaping="yes">&lt;/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">