--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xsl:stylesheet version="1.0"\r
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"\r
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"\r
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"\r
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"\r
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"\r
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"\r
+ xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"\r
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"\r
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"\r
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"\r
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"\r
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"\r
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"\r
+ xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0"\r
+\r
+ xmlns:dc="http://purl.org/dc/elements/1.1/"\r
+ xmlns:xlink="http://www.w3.org/1999/xlink"\r
+ xmlns:math="http://www.w3.org/1998/Math/MathML"\r
+ xmlns:xforms="http://www.w3.org/2002/xforms"\r
+\r
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"\r
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"\r
+ xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"\r
+ \r
+ xmlns:ooo="http://openoffice.org/2004/office"\r
+ xmlns:ooow="http://openoffice.org/2004/writer"\r
+ xmlns:oooc="http://openoffice.org/2004/calc"\r
+ xmlns:int="http://catcode.com/odf_to_xhtml/internal"\r
+ \r
+ exclude-result-prefixes="office meta config text table draw presentation\r
+ dr3d chart form script style number anim dc xlink math xforms fo\r
+ svg smil ooo ooow oooc int"\r
+>\r
+\r
+<xsl:output method = "xml"\r
+ encoding="UTF-8"\r
+ indent="yes" />\r
+<xsl:preserve-space elements="*" />\r
+\r
+<!-- Récuperation des parametres venant de PHP: \r
+ IntertitresRiches = oui|non \r
+ en fct de la presence d'un des plugins enluminure_typo ou intertitres_enrichis -->\r
+<xsl:param name="IntertitresRiches"/>\r
+\r
+\r
+<!-- gestion des titres de façon la plus generique possible -->\r
+<!-- si @text:style-name='Heading' est utilise, recuperer 'Heading' dans $STyleTitreGeneral -->\r
+<xsl:variable name="StyleTitreGeneral">\r
+ <xsl:if test="count(//*[node()][@text:style-name='Heading']) > 0">Heading</xsl:if>\r
+</xsl:variable>\r
+\r
+<!-- trouver le niveau de titre qui servira de $NivoTitre1 (= {{{intertitres}}})... a la bourrin ! -->\r
+<xsl:variable name="NivoTitre1">\r
+ <xsl:choose>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='1'] \r
+ | //*[node()][@text:style-name='Heading_20_1']) > 0">1</xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='2'] \r
+ | //*[node()][@text:style-name='Heading_20_2']) > 0">2</xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='3'] \r
+ | //*[node()][@text:style-name='Heading_20_3']) > 0">3</xsl:when> \r
+ <xsl:when test="count(//*[node()][@text:outline-level='4'] \r
+ | //*[node()][@text:style-name='Heading_20_4']) > 0">4</xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='5'] \r
+ | //*[node()][@text:style-name='Heading_20_5']) > 0">5</xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='6'] \r
+ | //*[node()][@text:style-name='Heading_20_6']) > 0">6</xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='7'] \r
+ | //*[node()][@text:style-name='Heading_20_7']) > 0">7</xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='8'] \r
+ | //*[node()][@text:style-name='Heading_20_8']) > 0">8</xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='9'] \r
+ | //*[node()][@text:style-name='Heading_20_9']) > 0">9</xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='10'] \r
+ | //*[node()][@text:style-name='Heading_20_10']) > 0">10</xsl:when>\r
+ </xsl:choose>\r
+</xsl:variable>\r
+<!-- idem pour le niveau $NivoTitre2 (= {{titres_gras}}) en se basant sur le niveau de $NivoTitre1... Hue! -->\r
+<xsl:variable name="NivoTitre2">\r
+ <xsl:choose>\r
+ <xsl:when test="count(//*[node()][@text:outline-level=$NivoTitre1 + 1] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre1 + 1)]) > 0"><xsl:value-of select="$NivoTitre1 + 1"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre1 + 2'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre1 + 2)]) > 0"><xsl:value-of select="$NivoTitre1 + 2"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre1 + 3'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre1 + 3)]) > 0"><xsl:value-of select="$NivoTitre1 + 3"/></xsl:when> \r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre1 + 4'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre1 + 4)]) > 0"><xsl:value-of select="$NivoTitre1 + 4"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre1 + 5'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre1 + 5)]) > 0"><xsl:value-of select="$NivoTitre1 + 5"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre1 + 6'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre1 + 6)]) > 0"><xsl:value-of select="$NivoTitre1 + 6"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre1 + 7'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre1 + 7)]) > 0"><xsl:value-of select="$NivoTitre1 + 7"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre1 + 8'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre1 + 8)]) > 0"><xsl:value-of select="$NivoTitre1 + 8"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre1 + 9'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre1 + 9)]) > 0"><xsl:value-of select="$NivoTitre1 + 9"/></xsl:when>\r
+ </xsl:choose>\r
+</xsl:variable>\r
+\r
+<!-- si il n'existe pas de $StyleTitreGeneral et si il n'y a qu'un seul element de $NivoTitre1 dans le doc \r
+ utiliser $NivoTitre1 comme $StyleTitreGeneral => $DecalerTitres = oui -->\r
+<xsl:variable name="DecalerTitres">\r
+ <xsl:if test="not($StyleTitreGeneral = 'Heading')\r
+ and count(//*[@text:outline-level='$NivoTitre1'] \r
+ | //*[@text:style-name=concat('Heading_20_',$NivoTitre1)]) = 1">oui</xsl:if>\r
+</xsl:variable>\r
+ \r
+<!-- si $DecalerTitres == oui => du fait du decalage on va avoir besoin d'un $NivoTitre3 \r
+ idem si enluminure-typo ou intertitres_enrichis -->\r
+<xsl:variable name="NivoTitre3">\r
+ <xsl:if test="$DecalerTitres = 'oui' or $IntertitresRiches = 'oui'">\r
+ <xsl:choose>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre2 + 1'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre2 + 1)]) > 0"><xsl:value-of select="$NivoTitre2 + 1"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre2 + 2'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre2 + 2)]) > 0"><xsl:value-of select="$NivoTitre2 + 2"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre2 + 3'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre2 + 3)]) > 0"><xsl:value-of select="$NivoTitre2 + 3"/></xsl:when> \r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre2 + 4'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre2 + 4)]) > 0"><xsl:value-of select="$NivoTitre2 + 4"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre2 + 5'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre2 + 5)]) > 0"><xsl:value-of select="$NivoTitre2 + 5"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre2 + 6'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre2 + 6)]) > 0"><xsl:value-of select="$NivoTitre2 + 6"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre2 + 7'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre2 + 7)]) > 0"><xsl:value-of select="$NivoTitre2 + 7"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre2 + 8'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre2 + 8)]) > 0"><xsl:value-of select="$NivoTitre2 + 8"/></xsl:when>\r
+ </xsl:choose>\r
+ </xsl:if>\r
+</xsl:variable>\r
+\r
+<!-- super-reloud! si enluminure-typo ou intertitres_enrichis on a besoin de titre4 et titre5\r
+ si en plus on a $DecalerTitres == oui il faut en plus titre6 \r
+ ca sent le besoin de pouvoir faire des boucles et/ou des fonctions en xsl... -->\r
+<xsl:variable name="NivoTitre4">\r
+ <xsl:if test="$IntertitresRiches = 'oui'">\r
+ <xsl:choose>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre3 + 1'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre3 + 1)]) > 0"><xsl:value-of select="$NivoTitre3 + 1"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre3 + 2'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre3 + 2)]) > 0"><xsl:value-of select="$NivoTitre3 + 2"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre3 + 3'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre3 + 3)]) > 0"><xsl:value-of select="$NivoTitre3 + 3"/></xsl:when> \r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre3 + 4'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre3 + 4)]) > 0"><xsl:value-of select="$NivoTitre3 + 4"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre3 + 5'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre3 + 5)]) > 0"><xsl:value-of select="$NivoTitre3 + 5"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre3 + 6'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre3 + 6)]) > 0"><xsl:value-of select="$NivoTitre3 + 6"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre3 + 7'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre3 + 7)]) > 0"><xsl:value-of select="$NivoTitre3 + 7"/></xsl:when>\r
+ </xsl:choose>\r
+ </xsl:if>\r
+</xsl:variable>\r
+<xsl:variable name="NivoTitre5">\r
+ <xsl:if test="$IntertitresRiches = 'oui'">\r
+ <xsl:choose>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre4 + 1'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre4 + 1)]) > 0"><xsl:value-of select="$NivoTitre4 + 1"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre4 + 2'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre4 + 2)]) > 0"><xsl:value-of select="$NivoTitre4 + 2"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre4 + 3'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre4 + 3)]) > 0"><xsl:value-of select="$NivoTitre4 + 3"/></xsl:when> \r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre4 + 4'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre4 + 4)]) > 0"><xsl:value-of select="$NivoTitre4 + 4"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre4 + 5'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre4 + 5)]) > 0"><xsl:value-of select="$NivoTitre4 + 5"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre4 + 6'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre4 + 6)]) > 0"><xsl:value-of select="$NivoTitre4 + 6"/></xsl:when>\r
+ </xsl:choose>\r
+ </xsl:if>\r
+</xsl:variable>\r
+<xsl:variable name="NivoTitre6">\r
+ <xsl:if test="$DecalerTitres = 'oui' and $IntertitresRiches = 'oui'">\r
+ <xsl:choose>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre5 + 1'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre5 + 1)]) > 0"><xsl:value-of select="$NivoTitre5 + 1"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre5 + 2'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre5 + 2)]) > 0"><xsl:value-of select="$NivoTitre5 + 2"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre5 + 3'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre5 + 3)]) > 0"><xsl:value-of select="$NivoTitre5 + 3"/></xsl:when> \r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre5 + 4'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre5 + 4)]) > 0"><xsl:value-of select="$NivoTitre5 + 4"/></xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level='$NivoTitre5 + 5'] \r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre5 + 5)]) > 0"><xsl:value-of select="$NivoTitre5 + 5"/></xsl:when>\r
+ </xsl:choose>\r
+ </xsl:if>\r
+</xsl:variable>\r
+\r
+\r
+<!-- trouver un titre general au document: \r
+ si $StyleTitreGeneral existe, concatener tous les elements avec ce style\r
+ sinon utiliser le premier element ayant le niveau de style $NivoTitre1\r
+ sinon utiliser le premier element text:h ou text:p et basta! -->\r
+<xsl:variable name="ContenuTitreDoc">\r
+ <xsl:choose>\r
+ <xsl:when test="$StyleTitreGeneral='Heading'">\r
+ <xsl:for-each select="//*[node()][@text:style-name='Heading']"><xsl:value-of select="."/> </xsl:for-each>\r
+ </xsl:when>\r
+ <xsl:when test="count(//*[node()][@text:outline-level=$NivoTitre1]\r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre1)]\r
+ ) > 0">\r
+ <xsl:value-of select="//*[node()][@text:outline-level=$NivoTitre1][1]\r
+ | //*[node()][@text:style-name=concat('Heading_20_',$NivoTitre1)][1]"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:value-of select="//text:h[node()][1] | //text:p[node()][1]"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+</xsl:variable>\r
+\r
+\r
+<!-- traitement de l'ensemble du doc -->\r
+<xsl:template match="/office:document-content">\r
+<!-- test niveaux de titres\r
+t1= <xsl:value-of select="$NivoTitre1" />\r
+t2= <xsl:value-of select="$NivoTitre2" />\r
+t3= <xsl:value-of select="$NivoTitre3" />\r
+tG= <xsl:value-of select="$StyleTitreGeneral" />\r
+-->\r
+<!-- test recuperation du parametre passe par PHP \r
+intertitres_riches= <xsl:value-of select="$IntertitresRiches" />\r
+-->\r
+<!-- le XML de sortie -->\r
+<articles>\r
+<article>\r
+ <titre><xsl:value-of select="$ContenuTitreDoc"/></titre>\r
+ <texte>\r
+ <xsl:apply-templates select="office:body/office:text"/>\r
+ </texte>\r
+</article>\r
+</articles>\r
+</xsl:template>\r
+\r
+\r
+<!-- virer les eventuels table des matieres et index -->\r
+<xsl:template match="//text:table-of-content | //text:alphabetical-index"/>\r
+\r
+\r
+<!-- les paragraphes y compris les vides utilises pour saut de ligne -->\r
+<xsl:template match="table:table-cell//text:p">\r
+ <xsl:apply-templates/>\r
+ <xsl:if test="count(node())=0">\r
+ <xsl:text>

</xsl:text>\r
+ </xsl:if>\r
+</xsl:template>\r
+<xsl:template match="text:p">\r
+ <xsl:apply-templates/>\r
+ <xsl:text >

</xsl:text>\r
+ <xsl:if test="count(node())=0">\r
+ <xsl:text>

</xsl:text>\r
+ </xsl:if>\r
+</xsl:template>\r
+\r
+\r
+\r
+<!-- bidouiller pour ne pas afficher le titre du document dans le texte (part 1) -->\r
+<xsl:template match="//*[@text:style-name='Heading']"/>\r
+\r
+<!-- les titres de façon dynamique en fonction des niveaux presents dans le fichier -->\r
+<xsl:template match="//*[node()][@text:outline-level] \r
+ | //*[node()][starts-with(@text:style-name,'Heading_20_')]">\r
+ <xsl:choose>\r
+<!-- suite de la bidouille pour ne pas afficher le titre du document dans le texte -->\r
+ <xsl:when test="not($StyleTitreGeneral='Heading') and text()=$ContenuTitreDoc"/>\r
+ <xsl:otherwise>\r
+ <xsl:call-template name="titres"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+</xsl:template>\r
+\r
+<xsl:template name="titres">\r
+<!-- si $DecalerTitres == oui, décaler les niveaux puisqu'il n'existe pas de $StyleTitreGeneral et qu'il n'y a qu'un $NivoTitre1 -->\r
+ <xsl:variable name="NivoTitre1_ec">\r
+ <xsl:choose>\r
+ <xsl:when test="not($DecalerTitres='oui')">\r
+ <xsl:value-of select="$NivoTitre1"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:value-of select="$NivoTitre2"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:variable>\r
+ <xsl:variable name="NivoTitre2_ec">\r
+ <xsl:choose>\r
+ <xsl:when test="not($DecalerTitres='oui')">\r
+ <xsl:value-of select="$NivoTitre2"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:value-of select="$NivoTitre3"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:variable>\r
+<!-- appliquer les formatages des titres -->\r
+<xsl:text >
</xsl:text>\r
+ <xsl:choose>\r
+<!-- formatages avec enluminure_typo ou intertitres_enrichis -->\r
+ <xsl:when test="$IntertitresRiches = 'oui'">\r
+ <!-- definir les niveaux de titre 3, 4 et 5 en fonction de $DecalerTitres -->\r
+ <xsl:variable name="NivoTitre3_ec">\r
+ <xsl:choose>\r
+ <xsl:when test="not($DecalerTitres='oui')">\r
+ <xsl:value-of select="$NivoTitre3"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:value-of select="$NivoTitre4"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:variable>\r
+ <xsl:variable name="NivoTitre4_ec">\r
+ <xsl:choose>\r
+ <xsl:when test="not($DecalerTitres='oui')">\r
+ <xsl:value-of select="$NivoTitre4"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:value-of select="$NivoTitre5"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:variable>\r
+ <xsl:variable name="NivoTitre5_ec">\r
+ <xsl:choose>\r
+ <xsl:when test="not($DecalerTitres='oui')">\r
+ <xsl:value-of select="$NivoTitre5"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:value-of select="$NivoTitre6"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:variable>\r
+ <!-- appliquer le formatage proprement dit -->\r
+ <xsl:choose>\r
+ <xsl:when test="@text:outline-level=$NivoTitre1_ec or @text:style-name=concat('Heading_20_',$NivoTitre1_ec)">\r
+{{{<xsl:apply-templates/>}}}\r
+</xsl:when>\r
+ <xsl:otherwise>\r
+ <!-- recuperer le niveau de titre en cours a la bourrin \r
+ (a coup sur y'a moyen de faire mieux mais on va pas se decarcasser pour ces p*** de plugins qui forkent definitivement le code spip ! -->\r
+ <xsl:variable name="NivoTitre_ec">\r
+ <xsl:choose>\r
+ <xsl:when test="@text:outline-level=$NivoTitre2_ec or @text:style-name=concat('Heading_20_',$NivoTitre2_ec)">2</xsl:when>\r
+ <xsl:when test="@text:outline-level=$NivoTitre3_ec or @text:style-name=concat('Heading_20_',$NivoTitre3_ec)">3</xsl:when>\r
+ <xsl:when test="@text:outline-level=$NivoTitre4_ec or @text:style-name=concat('Heading_20_',$NivoTitre4_ec)">4</xsl:when>\r
+ <xsl:when test="@text:outline-level=$NivoTitre5_ec or @text:style-name=concat('Heading_20_',$NivoTitre5_ec)">5</xsl:when>\r
+ </xsl:choose>\r
+ </xsl:variable>\r
+{<xsl:value-of select="$NivoTitre_ec"/>{<xsl:apply-templates/>}<xsl:value-of select="$NivoTitre_ec"/>}\r
+</xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:when>\r
+<!-- formatages sans enluminure_typo ou intertitres_enrichis -->\r
+ <xsl:otherwise>\r
+ <xsl:choose>\r
+ <xsl:when test="@text:outline-level=$NivoTitre1_ec or @text:style-name=concat('Heading_20_',$NivoTitre1_ec)">\r
+{{{<xsl:apply-templates/>}}}\r
+</xsl:when>\r
+ <xsl:when test="@text:outline-level=$NivoTitre2_ec or @text:style-name=concat('Heading_20_',$NivoTitre2_ec)">\r
+{{<xsl:apply-templates/>}}\r
+</xsl:when>\r
+ <xsl:otherwise>\r
+{<xsl:apply-templates/>}\r
+</xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+<xsl:text >
</xsl:text>\r
+</xsl:template>\r
+\r
+\r
+<!-- traitement des listes -->\r
+<xsl:template match="text:list">\r
+ <xsl:variable name="level" select="count(ancestor::text:list)+1"/>\r
+\r
+ <!-- le type de liste est le @text:style-name de l'element <text:list> le plus exterieur des listes imbriquees -->\r
+ <xsl:variable name="listClass">\r
+ <xsl:choose>\r
+ <xsl:when test="$level=1">\r
+ <xsl:value-of select="@text:style-name"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:value-of select="ancestor::text:list[last()]/@text:style-name"/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:variable>\r
+\r
+ <!-- choisir le bon type de liste en fonction du <text:list-level-style-XXX> du <text:list-style> dans les styles pre-definis\r
+ <xsl:variable name="node" select="key('listTypes', $listClass)/*[@text:level='$level']"/> -->\r
+ <xsl:variable name="node" select="/office:document-content/office:automatic-styles/text:list-style[@style:name=$listClass]/*[1]"/> \r
+ \r
+ <xsl:variable name="s">\r
+ <xsl:choose>\r
+ <xsl:when test="local-name($node)='list-level-style-number'">#</xsl:when>\r
+ <xsl:otherwise>*</xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:variable>\r
+<!-- -->\r
+ <xsl:call-template name="process-list">\r
+ <xsl:with-param name="s" select="$s"/>\r
+ </xsl:call-template>\r
+ \r
+ <xsl:text >
</xsl:text>\r
+</xsl:template>\r
+\r
+<xsl:template name="process-list"> \r
+ <xsl:param name="s"/>\r
+ <xsl:for-each select="descendant::text:list-item/text:p[node()]">\r
+-<xsl:for-each select="ancestor::*"><!-- gestion des listes imbriquées -->\r
+ <xsl:if test="name()='text:list-item'"><xsl:value-of select="$s"/></xsl:if>\r
+</xsl:for-each> \r
+ <xsl:apply-templates />\r
+ </xsl:for-each>\r
+</xsl:template>\r
+\r
+\r
+<!-- traitement des tableaux -->\r
+<xsl:template match="table:table">\r
+<xsl:text >
</xsl:text>\r
+ <xsl:apply-templates select="table:table-row | */table:table-row"/>\r
+<xsl:text >
</xsl:text> \r
+</xsl:template>\r
+\r
+<xsl:template match="table:table-row | */table:table-row">\r
+<xsl:text >
</xsl:text>|<xsl:choose>\r
+<!-- si c'est la premiere ligne *et* qu'il n'y a as de cellules fusionnees verticalement utiliser {{ }} pour faire un thead -->\r
+ <xsl:when test="position()=1 and count(table:table-cell[@table:number-rows-spanned])=0">\r
+ <xsl:apply-templates select="table:table-cell | table:covered-table-cell" mode="thead"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:apply-templates select="table:table-cell | table:covered-table-cell" mode="tbody"/>\r
+ </xsl:otherwise>\r
+</xsl:choose>\r
+</xsl:template>\r
+\r
+<xsl:template match="table:table-cell" mode="thead">{{<xsl:apply-templates select="*[node()]"/>}}|</xsl:template>\r
+<xsl:template match="table:table-cell" mode="tbody"><xsl:apply-templates select="*[node()]"/>|</xsl:template>\r
+\r
+<!-- ca c'est la mauvaise bidouille pour avoir le meme traitement pour les cellules de fusion alors qu'elles ont un mode different -->\r
+<xsl:template match="table:covered-table-cell" mode="thead"><xsl:call-template name="cells_fusionnees"/></xsl:template>\r
+<xsl:template match="table:covered-table-cell" mode="tbody"><xsl:call-template name="cells_fusionnees"/></xsl:template>\r
+\r
+<!-- traitement des cellules masquees du fait de fusions par colonnes/lignes \r
+ bidouille: si dans les cellules precedentes de la meme ligne il y a un table:number-columns-spanned="XX"\r
+ alors c'est une fusion de cellules d'une meme ligne (code <|) sinon fusion de cellules d'une meme colonne (code ^|) -->\r
+<xsl:template name="cells_fusionnees">\r
+ <xsl:variable name="fusion">\r
+ <xsl:for-each select="preceding-sibling::*">\r
+ <xsl:if test="@table:number-columns-spanned > 1"><</xsl:if>\r
+ </xsl:for-each>\r
+ </xsl:variable>\r
+ <xsl:variable name="caractere_fusion">\r
+ <xsl:choose>\r
+ <xsl:when test="$fusion = ''">^</xsl:when>\r
+ <xsl:otherwise><</xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:variable>\r
+<xsl:value-of select="$caractere_fusion"/>|</xsl:template>\r
+\r
+\r
+<!-- les liens -->\r
+<xsl:template match="text:a">[<xsl:apply-templates />-><xsl:value-of select="@xlink:href" />]</xsl:template>\r
+\r
+<!-- les ancres -->\r
+<xsl:template match="text:bookmark-start|text:bookmark">[<xsl:value-of select="@text:name" /><-]\r
+</xsl:template>\r
+\r
+<!-- notes de bas de page -->\r
+<xsl:template match="text:note-citation"/>\r
+<xsl:template match="text:note-body">[[<xsl:apply-templates />]]</xsl:template>\r
+ \r
+<!-- les sauts de ligne -->\r
+<xsl:template match="text:line-break">\r
+_ <xsl:apply-templates />\r
+</xsl:template>\r
+\r
+<!-- gras et italiques -->\r
+<xsl:template match="text:span">\r
+ <xsl:variable name="StyleType" select="@text:style-name"/>\r
+ <xsl:variable name="weight" select="/office:document-content/office:automatic-styles/style:style[@style:name=$StyleType]/style:text-properties/@fo:font-weight"/>\r
+ <xsl:variable name="style" select="/office:document-content/office:automatic-styles/style:style[@style:name=$StyleType]/style:text-properties/@fo:font-style"/>\r
+ <xsl:choose>\r
+ <xsl:when test="$weight='bold'">{{<xsl:apply-templates />}}</xsl:when>\r
+ <xsl:when test="$style='italic'">{<xsl:apply-templates />}</xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:apply-templates />\r
+ </xsl:otherwise>\r
+ </xsl:choose> \r
+</xsl:template>\r
+\r
+\r
+<!-- nettement plus bricolage : les images... \r
+ on met le nom de fichier de l'image qu'il faudra echanger en php par son id document spip une fois qu'il sera reference dans la table documents --> \r
+<xsl:template match="draw:image">\r
+<!-- on filtre les elements draw:image qui ont un frere draw:object cad qui ne sont pas des images --> \r
+ <xsl:if test="count(parent::draw:frame/draw:object)=0">\r
+ <xsl:call-template name="img2texte" />\r
+ </xsl:if>\r
+</xsl:template>\r
+\r
+<xsl:template name="img2texte"><img<xsl:value-of select="substring(@xlink:href,10)"/>;;;<xsl:value-of select="substring-before(parent::draw:frame/@svg:width,'cm')" />;;;<xsl:value-of select="substring-before(parent::draw:frame/@svg:height,'cm')" />;;;|<xsl:choose>\r
+<!-- sale bidouille pour approximer la position de l'image (|left |center |right) -->\r
+<xsl:when test="substring-before(parent::draw:frame/@svg:x, 'cm') <= 2">left</xsl:when>\r
+<xsl:when test="substring-before(parent::draw:frame/@svg:x, 'cm') >= 5">right</xsl:when>\r
+<xsl:otherwise>center</xsl:otherwise>\r
+</xsl:choose>></xsl:template>\r
+\r
+<!-- pour continuer dans les bidouillages: les objets integres \r
+ i.e. les formules de math sous forme d'un fichier MathML externe stocke dans un ss-rep: /Object X/content.xml \r
+ ici on cree une balise <math>Object X</math> qui sera ensuite post-traitee pour recuperer la formule -->\r
+<xsl:template match="draw:object[@xlink:href]">\r
+<math><xsl:value-of select="substring(@xlink:href,3)"/></math>\r
+</xsl:template>\r
+\r
+<!--\r
+ This template is too dangerous to leave active...\r
+<xsl:template match="text()">\r
+ <xsl:if test="normalize-space(.) !=''">\r
+ <xsl:value-of select="normalize-space(.)"/>\r
+ </xsl:if>\r
+</xsl:template>\r
+-->\r
+\r
+</xsl:stylesheet>\r