diff --git a/canoprof_to_hdoc/README.md b/canoprof_to_hdoc/README.md index 9c2f34f4b659db29b1fa6b4d059deed2b5e244f6..d605f6f5272e056f43fe14d9360025da9195942b 100644 --- a/canoprof_to_hdoc/README.md +++ b/canoprof_to_hdoc/README.md @@ -1,5 +1,13 @@ # Convertisseur Canoprof vers HDOC +##Credits + +### Autumn 2016 + +* NEVEUX Anaïs + +* BELLIER Pierre-Ulysse + ## User story Un utilisateur a créé un cours de mathématiques à l'aide de l'outil Canoprof. Il souhaite, pour une raison quelconque, convertir son projet (et donc ses activités et programmations) dans un autre format. Pour cela il utilise notre convertisseur qui permet préalablement une conversion vers un format intermédiare (hdoc). Il fait donc un clic droit sur l'élément principal de son projet sous Canoprof et clique sur "exporter l'archive". Il laisse les options (Inclure le réseau descendant complet des items sélectionnés, et Préserver les espaces de l'atelier) par défaut. Il déplace ensuite le fichier .scar obtenu dans le dossier input du convertisseur puis exécute le fichier run.bat (ou run.sh sous un système UNIX). Une fois l'exécution terminée, il récupère son hdoc dans le dossier output. @@ -15,4 +23,16 @@ Un utilisateur a cr - Activity created in the .programme, transclusion available. - Information/Warning/Advice/ect... - Method and Remind fully functional. -- Add QCU and QCM. Transclusion of them available too. Need to fix a schema validation error when putting a title to a question, without filling the question content. \ No newline at end of file +- Add QCU and QCM. Transclusion of them available too. Need to fix a schema validation error when putting a title to a question, without filling the question content. +- Add "Exercice redactionnel" and transclusion. + +## Known bugs +- You can have an exercice with no question but a solution. We should add a if statement to handle this. +- Something create a "keywrds" node inside the opale output, that make the schema invalid. Editing the title inside myScenari and just pressing enter is sufficient to fix that. But it will be better to fix that inside one of the xsl files. + +## TODO List +- Allow user to convert scar files which contain a .programme file with a name different than "Test.programme". +- Handle multiple files conversion +- Add all other type of exercices +- Handle other kind of paragraph +- Handle resources (images for example) \ No newline at end of file diff --git a/canoprof_to_hdoc/xsl/programmation.xsl b/canoprof_to_hdoc/xsl/programmation.xsl index 8dd9cc76eb0f2cbdaf3a63284bfc96005d7f275f..15a78c7d78adb2e1b3806c258a0485d5305c5f5b 100644 --- a/canoprof_to_hdoc/xsl/programmation.xsl +++ b/canoprof_to_hdoc/xsl/programmation.xsl @@ -19,7 +19,22 @@ RNGSchema="../../schemas/xhtml/hdoc1-xhtml.rng" type="xml" - <xsl:value-of select="cp:programM/sp:title"/> + + <xsl:choose> + <xsl:when test="string-length(cp:programM/sp:title) > 0"> + <xsl:value-of select="cp:programM/sp:title"/> + </xsl:when> + <xsl:otherwise> + PROGRAMMATION + <xsl:if test="./cp:programM/sp:class"> + <xsl:value-of select="./cp:programM/sp:class"/><xsl:text> </xsl:text> + </xsl:if> + <xsl:if test="./cp:programM/sp:period"> + [<xsl:value-of select="./cp:programM/sp:period"/>] + </xsl:if> + </xsl:otherwise> + </xsl:choose> + @@ -27,8 +42,7 @@ - - + @@ -321,56 +335,124 @@ - - + +

- - -
- -
-
- -
- -
-
- +
+

+ +
+ +
+
+ +
+
+ +
+ +
+
+
+
+
+ + + +
+
+

+
+
+

+ +
+ +
+
+ +
+
+ +
+ +
+
+
- + + + +
+
+

+
+
+ +
+ + +
+ +
+
+
+
+ +

- +
- + +
+ +
+
+
+
+ + + +
+
+

+
+
+ +
+ +

+
+
- +

- +

- +
@@ -382,12 +464,13 @@
+ + +
+ +
+
- -
- -
-
@@ -396,25 +479,34 @@
+ +
+ +
+
+ +
+ +
+
- -
- -
-
+ - + + + + diff --git a/canoprof_to_opale/README.md b/canoprof_to_opale/README.md index 6fc4f5000ea7179f6548c6897bcafe38c5c7d6f5..883a632a62dcd55d13dc13dec9eb19df1d6439ac 100644 --- a/canoprof_to_opale/README.md +++ b/canoprof_to_opale/README.md @@ -1,12 +1,20 @@ # Canoprof2Opale +##Credits + +### Autumn 2016 + +* NEVEUX Anaïs + +* BELLIER Pierre-Ulysse + ## User story Un utilisateur a créé un cours de mathématiques à l'aide de l'outil Canoprof. Il souhaite, pour une raison quelconque, convertir son projet (et donc ses activités et programmations) au format Opale. Pour cela il utilise notre convertisseur qui va agir en deux étapes : une conversion dans un format intermédiaire (le format hdoc), puis conversion de ce hdoc dans le format Opale. Une fois son cours créé, il effectue un clic-droit sur l'élément racine de son projet, et choisit "exporter l'archive". Il laisse les options (Inclure le réseau descendant complet des items sélectionnés, et Préserver les espaces de l'atelier) par défaut. Il déplace ensuite le fichier .scar obtenu dans le dossier input du convertisseur puis exécute le fichier run.bat (ou run.sh sous un système UNIX). Il récupère ensuite un nouveau fichier .scar dans le dossier output, qu'il pourra importer dans Scenari. ## Getting started - Put the Canoprof .scar in the input folder. The scar should be the only one in this folder. The .programme should be into the root of your .scar and should be named Test.programme -An .scar example is already in the input folder. +A .scar example is already in the input folder. - Check if there's no .scar file in the input folder of canoprof_to_hdoc folder. If files exist, please remove them. Otherwise, the converter can take one of the .scar in this folder instead of the one you want to convert. - Use the run.bat file to launch conversion. - You will find your converted .scar in the output folder. @@ -14,10 +22,19 @@ An .scar example is already in the input folder. ## What the converter handle - Sequence - Session -- Activity created in the .programme, transclusion should be available soon. +- Activity created in the .programme, transclusion available. - Information/Warning/Advice/ect... - Method and Remind fully functional - QCM and QCU working, even with transclusion. +- Add "Exercice redactionnel" and transclusion. +## Known bugs +- You can have an exercice with no question but a solution. We should add a if statement to handle this. +- Something create a "keywrds" node inside the opale output, that make the schema invalid. Editing the title inside myScenari and just pressing enter is sufficient to fix that. But it will be better to fix that inside one of the xsl files. - +## TODO List +- Allow user to convert scar files which contain a .programme file with a name different than "Test.programme". +- Handle multiple files conversion +- Add all other type of exercices +- Handle other kind of paragraph +- Handle resources (images for example) diff --git a/canoprof_to_opale/sample/Choice_explanation.scar b/canoprof_to_opale/sample/Choice_explanation.scar new file mode 100644 index 0000000000000000000000000000000000000000..37e3d6b740eca65653bf280675c5d83f7d9b0cda Binary files /dev/null and b/canoprof_to_opale/sample/Choice_explanation.scar differ diff --git a/canoprof_to_opale/sample/Fix_QCU_QCM.scar b/canoprof_to_opale/sample/Fix_QCU_QCM.scar new file mode 100644 index 0000000000000000000000000000000000000000..6769c5d3af42f0bf2bdc7d1548684dadb2071a97 Binary files /dev/null and b/canoprof_to_opale/sample/Fix_QCU_QCM.scar differ diff --git a/canoprof_to_opale/sample/Indice.scar b/canoprof_to_opale/sample/Indice.scar new file mode 100644 index 0000000000000000000000000000000000000000..f564078d1b71ca1a011d23701ff970941243cca9 Binary files /dev/null and b/canoprof_to_opale/sample/Indice.scar differ diff --git a/canoprof_to_opale/sample/OpenQuestion.scar b/canoprof_to_opale/sample/OpenQuestion.scar new file mode 100644 index 0000000000000000000000000000000000000000..736745950c9e340b53df9b0e548114300f5f0d9f Binary files /dev/null and b/canoprof_to_opale/sample/OpenQuestion.scar differ diff --git a/canoprof_to_opale/sample/Redactionnel_Indice_Transclusion.scar b/canoprof_to_opale/sample/Redactionnel_Indice_Transclusion.scar new file mode 100644 index 0000000000000000000000000000000000000000..3f57f776c9816bbcfcfb92b16926bc05b84434d9 Binary files /dev/null and b/canoprof_to_opale/sample/Redactionnel_Indice_Transclusion.scar differ diff --git a/framapad_to_hdoc/README.md b/framapad_to_hdoc/README.md index 97d961105bbbcdde44e04d7244185c4944e95007..a56a6810acade2d795eeb00be7206019d42a5ecf 100755 --- a/framapad_to_hdoc/README.md +++ b/framapad_to_hdoc/README.md @@ -30,26 +30,6 @@ Vous êtes un utilisateur de framapad et en créez un pour un projet. Après avo 3. run the `run.[bat|sh]` script of your choice depending on your OS 4. and retrieve the hdoc outputs in the `/output` folder -## Unsupported -- Markdown -- Author paternity -- Etherpad timeline -- Chat - -## Known bugs -- Nested lists in lists are not supported -Example : -`
    -
  • -
      -
    • - Never gonna give you up. -
    • -
    -
  • -
      ` -- As a consequence, etherpad indentation is not supported because it is coded as nested lists. - ## Product Backlog Currently available on: https://framemo.org/framapad_to_opale @@ -57,15 +37,13 @@ Currently available on: https://framemo.org/framapad_to_opale See also : https://bimestriel.framapad.org/p/nf29_framapad_to_opale for the full documentation of our working process. ## TODO -- Nested Lists - Indentation - Titles (and therefore Structure of the doc) -- Coloured text - Code - Markdown ## Technical notes -### Description of etherpad_to_hdoc.ant +### Description of framapad_to_hdoc.ant #### Prelude - Importation of necessary classes (antlib, htmlcleaner, jing) diff --git a/framapad_to_opale/README.md b/framapad_to_opale/README.md index a0b3d73a07dec2051a683d14322c8fdf4212d98f..edaf70a777ec55014cc5ccd19efa5bd0322bb477 100644 --- a/framapad_to_opale/README.md +++ b/framapad_to_opale/README.md @@ -10,7 +10,7 @@ - Fecherolle Cecile (2014) ## Presentation -How to transform an framapad document in opale document. +How to transform a framapad document in opale document. Filepaths in this document are relative to this readme file. @@ -19,8 +19,7 @@ Filepaths in this document are relative to this readme file. - Hdoc2Opale ## User Documentation -1. Download a framapad document in html format. - 1. Create or join a framapad document then export it in html format (Import/Export Button) in the `/input` directory (if the directory does not exists, you have to create it). +1. Create a framapad document then export it in html format (Import/Export Button) and put it in the `/input` directory (if the directory does not exists, you have to create it). 2. Execute the file `/run.bat` or `/run.sh` depending on the OS. A `.scar` file is created in the directory `/output` *If the `/input` directory contains multiple files, they will be all treated. 3. Open the document with Opale @@ -29,29 +28,6 @@ Filepaths in this document are relative to this readme file. 3. Import your `.scar` file in the directory. 4. Open the file Main.xml created. -## Unsupported -- MarkDown -- Timeline and author paternity -- Chat - -## Known bugs -Nested lists in lists are not supported. - -Here's an example : - -`
        -
      • -
          -
        • - Never gonna give you up. -
        • -
        -
      • -
          ` - -## TODO -- Work with markdown -- Correct nested lists ## Technical notes ### Description of framapad_to_hdoc.ant diff --git a/hdoc_to_basex/README.md b/hdoc_to_basex/README.md index 92e8b43a4e078c0b8039dcc7882814165374f4eb..3a5792a86be813a3b22fce9929454b1f02fd47a3 100644 --- a/hdoc_to_basex/README.md +++ b/hdoc_to_basex/README.md @@ -42,7 +42,11 @@ Step by step : Follow the instructions in the script, and then execute it. [Step 3 : Make XQuery request] - - In the Text Editor of BaseX, you can open and execute xquery scripts in folder [`basex/xquery`](https://gitlab.utc.fr/crozatst/hdoc/tree/master/hdoc_to_basex/basex/xquery). - - Available scripts : - * searchDocByAuthor.hq - * searchDocByTitle.hq \ No newline at end of file + - In the Text Editor of BaseX, you can open and execute xquery script "main.xq" in folder [`basex/xquery`](https://gitlab.utc.fr/crozatst/hdoc/tree/master/hdoc_to_basex/basex/xquery). + It's in this main module that we call predefined functions and execute script + + - .xqm files are library modules where we have defined functions, we can go to these files for more detailed using instructions + Available library modules : + * searchDocByAuthor.xqm + * searchDocByTitle.xqm + * searchDocByTitle.xqm \ No newline at end of file diff --git a/hdoc_to_basex/basex/xquery/XQueryFunctions.hq b/hdoc_to_basex/basex/xquery/XQueryFunctions.hq deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/hdoc_to_basex/basex/xquery/main.xq b/hdoc_to_basex/basex/xquery/main.xq new file mode 100644 index 0000000000000000000000000000000000000000..f4e867ef34d9f99ed0d08af753e4d3122eb4f107 --- /dev/null +++ b/hdoc_to_basex/basex/xquery/main.xq @@ -0,0 +1,10 @@ +(: this script with .xq as suffix is the main module :) +(: all functions defined in .xqm files (library modules) can be called here :) + +import module namespace myNs = "https://gitlab.utc.fr/crozatst/hdoc/tree/master/hdoc_to_basex" at "searchSectionByTitle.xqm", "searchSectionByTitle.xqm", "searchDocByAuthor.xqm"; + +(: myNs:searchDocByTitle('^NF29_HdocEtherpad$', //document ):) +(: myNs:searchSectionByTitle('contenu', //document) :) +(: myNs:searchDocByAuthor('montangé', //document) :) + +myNs:searchSectionByTitle('xml', myNs:searchDocByAuthor('montangé', //document)) \ No newline at end of file diff --git a/hdoc_to_basex/basex/xquery/searchDocByAuthor.hq b/hdoc_to_basex/basex/xquery/searchDocByAuthor.xqm similarity index 52% rename from hdoc_to_basex/basex/xquery/searchDocByAuthor.hq rename to hdoc_to_basex/basex/xquery/searchDocByAuthor.xqm index 98a1933fa9353c5551c007dcd314761fb7e53a8d..495bed1344731a18fec76bd9aeb4b4ba90eec017 100644 --- a/hdoc_to_basex/basex/xquery/searchDocByAuthor.hq +++ b/hdoc_to_basex/basex/xquery/searchDocByAuthor.xqm @@ -1,21 +1,20 @@ (: This script will return documents by searching its author :) (: We can assign a Regular Expression to the variable $author :) -(: For example, $author := '^Baptiste Montangé$', to search for an exact name:) +(: For example, $name := '^Baptiste Montangé$', to search for an exact name:) (: For example, $name := 'Montangé', to search for documents whose author named Coutant:) -(: Remark : Accents in the authors' names have been taken care of :) +(: Remark : case and accents in author's name have been taken care of :) -declare function local:searchDocByAuthor($name as xs:string, $docs as node()*) as node()* +module namespace myNs = "https://gitlab.utc.fr/crozatst/hdoc/tree/master/hdoc_to_basex"; + +declare function myNs:searchDocByAuthor($name as xs:string, $docs as node()*) as node()* { - let $name_noAcc := translate($name, 'áàâäéèêëíìîïóòôöúùûü','aaaaeeeeiiiioooouuuu') + let $name_noAcc := translate($name, 'áàâäéèêëíìîïóòôöúùûüABCDEFGHIJKLMNOPQRSTUVWXYZ','aaaaeeeeiiiioooouuuuabcdefghijklmnopqrstuvwxyz') for $doc in $docs return for $author in $doc/authors/author let $titre := $doc/titre - let $author_noAcc := translate($author, 'áàâäéèêëíìîïóòôöúùûü','aaaaeeeeiiiioooouuuu') + let $author_noAcc := translate($author, 'áàâäéèêëíìîïóòôöúùûüABCDEFGHIJKLMNOPQRSTUVWXYZ','aaaaeeeeiiiioooouuuuabcdefghijklmnopqrstuvwxyz') where matches($author_noAcc, $name_noAcc) group by $titre (: Avoid duplications of documents by their titre:) return $doc -}; - -(: Example :) -local:searchDocByAuthor('Montangé', //document) \ No newline at end of file +}; \ No newline at end of file diff --git a/hdoc_to_basex/basex/xquery/searchDocByTitle.hq b/hdoc_to_basex/basex/xquery/searchDocByTitle.xqm similarity index 68% rename from hdoc_to_basex/basex/xquery/searchDocByTitle.hq rename to hdoc_to_basex/basex/xquery/searchDocByTitle.xqm index 3bcc420bfe9834f62c8839f98271cb20316651bd..de3582cd772c1d8d63e623718312d7ff04e8e9b0 100644 --- a/hdoc_to_basex/basex/xquery/searchDocByTitle.hq +++ b/hdoc_to_basex/basex/xquery/searchDocByTitle.xqm @@ -3,12 +3,11 @@ (: For example, $name := '^NF29_HdocEtherpad$', to search for an exact name:) (: For example, $name := 'NF29', to search for documents whose name contains 'NF29':) -declare function local:searchDocByTitle($name as xs:string, $docs as node()*) as node()* +module namespace myNs = "https://gitlab.utc.fr/crozatst/hdoc/tree/master/hdoc_to_basex"; + +declare function myNs:searchDocByTitle($name as xs:string, $docs as node()*) as node()* { for $doc in $docs where matches($doc/titre, $name, "i") return $doc -}; - -(: Example :) -local:searchDocByTitle('^NF29_HdocEtherpad$', //document) \ No newline at end of file +}; \ No newline at end of file diff --git a/hdoc_to_basex/basex/xquery/searchSectionByTitle.xqm b/hdoc_to_basex/basex/xquery/searchSectionByTitle.xqm new file mode 100644 index 0000000000000000000000000000000000000000..ff588c05711539ef8bad8a1707246680b0e25c39 --- /dev/null +++ b/hdoc_to_basex/basex/xquery/searchSectionByTitle.xqm @@ -0,0 +1,18 @@ +(: This script will return a section by searching keyword in its title :) +(: We can assign a Regular Expression to the variable $keyword :) +(: For example, $keyword := '^Objectifs$', to search for sections whose titles are exactly "Objectifs":) +(: For example, $keyword := 'Syntax', to search for sections whose titles containing "Syntax" :) +(: Remark : case and accents in the keyword have been taken care of :) + +module namespace myNs = "https://gitlab.utc.fr/crozatst/hdoc/tree/master/hdoc_to_basex"; + +declare function myNs:searchSectionByTitle($keyword as xs:string, $docs as node()*) as node()* +{ + let $keyword_noAcc := translate($keyword, 'áàâäéèêëíìîïóòôöúùûüABCDEFGHIJKLMNOPQRSTUVWXYZ','aaaaeeeeiiiioooouuuuabcdefghijklmnopqrstuvwxyz') + for $doc in $docs + return + for $section in $doc/sections/section + let $title_noAcc := translate($section/titresection, 'áàâäéèêëíìîïóòôöúùûüABCDEFGHIJKLMNOPQRSTUVWXYZ','aaaaeeeeiiiioooouuuuabcdefghijklmnopqrstuvwxyz') + where matches($title_noAcc, $keyword_noAcc) + return $section +}; \ No newline at end of file diff --git a/hdoc_to_elasticSearch/hdoc_to_elasticsearch.ant b/hdoc_to_elasticSearch/hdoc_to_elasticsearch.ant index aaf11e35420318750be13d0f6e09e37c685f158c..7d983cf2d64da0a47e5d6d2cc920a84292103f4d 100644 --- a/hdoc_to_elasticSearch/hdoc_to_elasticsearch.ant +++ b/hdoc_to_elasticSearch/hdoc_to_elasticsearch.ant @@ -1,37 +1,51 @@ + + + + + + + - + - - - - - - - - Entry file : ${hdocFileName} + Entry file : ${fileToParse} - - - - - - + + + + + + + + - - - - + + + + + + + + + + + + + + + + - + diff --git a/hdoc_to_elasticSearch/lib/ant-contrib.jar b/hdoc_to_elasticSearch/lib/ant-contrib-0.3.jar similarity index 100% rename from hdoc_to_elasticSearch/lib/ant-contrib.jar rename to hdoc_to_elasticSearch/lib/ant-contrib-0.3.jar diff --git a/framapad_to_hdoc/output/.gitkeep b/hdoc_to_elasticSearch/logstash/input/.gitkeep similarity index 100% rename from framapad_to_hdoc/output/.gitkeep rename to hdoc_to_elasticSearch/logstash/input/.gitkeep diff --git a/hdoc_to_elasticSearch/sample/result.hdoc b/hdoc_to_elasticSearch/sample/result.hdoc new file mode 100644 index 0000000000000000000000000000000000000000..b5a18bc4722843e5b7d1bc9c7699a56dcfb72e6b Binary files /dev/null and b/hdoc_to_elasticSearch/sample/result.hdoc differ diff --git a/hdoc_to_elasticSearch/input/sample.hdoc b/hdoc_to_elasticSearch/sample/sample.hdoc similarity index 100% rename from hdoc_to_elasticSearch/input/sample.hdoc rename to hdoc_to_elasticSearch/sample/sample.hdoc diff --git a/hdoc_to_elasticSearch/sample/sample01.hdoc b/hdoc_to_elasticSearch/sample/sample01.hdoc new file mode 100644 index 0000000000000000000000000000000000000000..4707fa1cff8c7fff96056a74b21dba028a3675ba Binary files /dev/null and b/hdoc_to_elasticSearch/sample/sample01.hdoc differ diff --git a/hdoc_to_elasticSearch/sample/sample02.hdoc b/hdoc_to_elasticSearch/sample/sample02.hdoc new file mode 100644 index 0000000000000000000000000000000000000000..acf60e7d10c03fbd6ef23528bdc87778ae3a7831 Binary files /dev/null and b/hdoc_to_elasticSearch/sample/sample02.hdoc differ diff --git a/hdoc_to_epub/README.md b/hdoc_to_epub/README.md index f464a9fe52a82a8316a0dc86a78ac2da4cb33795..133f14a0e504934a4b602083d0820b9966fef4b1 100644 --- a/hdoc_to_epub/README.md +++ b/hdoc_to_epub/README.md @@ -39,11 +39,19 @@ Image : JPEG; JPG, PNG, SVG (non testé pour SVG) Gestion du multifichiers en input +Hypertexte + Unsupported ----------- ODG : non supporté en EPUB => "Élément non supporté en EPUB : " +Problème sur la liseuse vis à vis du CSS (à détailler) + +Exercices + +Méthode et Rappels (data-hdoc-type) + Known bugs ---------- @@ -57,8 +65,13 @@ Problème avec les keywords : le hdoc contient des keywords mais nous ne savons Todo list --------- -Étude compatibilité entre EPUB2 et EPUB3 +Trouver une solution pour le dimentionnement des images + +Repérer le problème avec le css + +Faire l'affichage des exercices +Faire l'affichage des nouveaux types : Méthode et Rappels Technical Notes --------------- diff --git a/hdoc_to_epub/changement/opale_to_hdoc_regle2.xsl b/hdoc_to_epub/changement/opale_to_hdoc_regle2.xsl new file mode 100644 index 0000000000000000000000000000000000000000..65fc9b84191ad647e4fc7177c876d56171ffca05 --- /dev/null +++ b/hdoc_to_epub/changement/opale_to_hdoc_regle2.xsl @@ -0,0 +1,552 @@ + + + + + + + + + + + + + + + RNGSchema="http://hdoc.crzt.fr/schemas/xhtml/hdoc1-xhtml.rng" type="xml" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          + +

          +
          + + + <xsl:value-of select="."/> + + + +
          + +
          +
          + + + +

          + +

          +
          + + + + + + +
          + +
          +
          + + + + + + +
          + +
          +
          + + + + + + + + + + + +
          + +
          +
          + + + +
          +
          + + + +
          + + + + + + + + + + + +
          + +
          +
          +
          + + + +
          +
          + + + +
          + + + + + + + + + +
          +
          +

          Questions de synthèse

          +
          + +
          + +
          +
          +
          + +
          + +
          +
          +
          + + + +
          +
          + + + +
          + + + + + + + +
          + +
          +
          +
          + + + +
          +
          +

          Objectifs

          +
          +
          + +
          +
          +
          + + + +
          +
          +

          Introduction

          +
          + +
          + +
          +
          +
          + + + +
          +
          +

          Conclusion

          +
          + +
          + +
          +
          +
          + + + + + + + + + + + + + + +
          +
          + + +
          + + + + + + + +
          +
          + + + +
          +
          + +
          + + +
          +
          + + +
          + +
          +
          + + +
          +
          + +
          + +
          + +
          +
          +
          +
          + + + + + + + + + + {$name} + + + + + + + + + + + + + + + + + + + + + +
          + + +
          +
          + + +
          + + +
          +
          + + +
          + + +
          +
          + + +
          + + +
          +
          + + +
          + + +
          +
          + + +
          + + +
          +
          + + +
          + + +
          +
          + + +
          + + +
          +
          + + +
          + + +
          +
          + + +
          + + +
          +
          + + + +
          + + +
          +
          + + +
          + + +
          +
          + + +
          + + +
          +
          + + + + + + + + + + + + +

          + +

          +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + +
          +
          + + + +
            + +
          +
          + + + + + +
        • + +
        • +
          + + + + + + + +
          +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          + +

          +
          + + + + diff --git a/hdoc_to_epub/file/stylesheet.css b/hdoc_to_epub/file/stylesheet.css index 48a63521582360e194875f4ae1194586c9c83878..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/hdoc_to_epub/file/stylesheet.css +++ b/hdoc_to_epub/file/stylesheet.css @@ -1,143 +0,0 @@ -body{ - margin: 0px; - padding: 0px; - height: 100%; - font: 12px Tahoma, Arial, Sans-serif; -} - -h1, h2, h3, h4, h5, h6{ - font-weight: bold; -} -h1{ - font-size: 1.8em; - color: #4463A1; - text-align: center; -} -h2{ - font-size:1.8em; - color:#4463A1; -} -h3{ - font-size: 1.4em; - color: #4463A1; -} -h4, h5, h6{ - font-size: 1.3em; - color: #4463A1; -} - -p{ - text-align: justify; - font-size: 1.2em; - margin: 0.2em 1em 0.7em 1em; -} - -table, td, th { - border: 1px solid #4463A1; - text-align: center; - font-size: 1.2em; -} - -td p, th p{ - text-align: center; - font-size: 15px; -} - -tr:first-child { - font-weight: bold; - color : white; - background-color : #4463A1; -} - -table { - border-collapse: collapse; - width: 100%; -} - -th { - padding: 10px; -} - -td{ - padding: 5px; -} - -.textTitle{ - float : left; -} - -.title{ - float : right; -} - -.border{ - background: #f5fcff; - border: 2px solid #4463A1; - box-shadow: 0px 5px 5px #888888; - padding: 5px; - clear: both; -} - -.warning{ - color:#cc0000; -} - -.borderWarning{ - background: #ffcccc; - border: 2px solid #cc0000; - box-shadow: 0px 5px 5px #888888; - padding: 5px; - clear: both; -} - -.noCut{ - page-break-inside: avoid; -} - -.titlePage{ - margin: 30vh 0 0 0; - text-align: center; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - font-size: 30px; -} - -.subTitlePage{ - text-align: center; - font-size: 15px; -} - -.bold{ - font-weight: bold; -} - -.imgContainer1{ - text-indent:0; - text-align:center; - margin-right:auto; - margin-left:auto; - width:99%; - page-break-before:auto; - page-break-inside:avoid; - page-break-after:auto; -} - -.imgContainer2{ - margin-left:0; - margin-right:0; - text-align:center; - text-indent:0; - height:100%; - width:100%; -} - -p .imgContainer3{ - display:inline-block; - text-indent:0; - width:100%; -} - -img{ - max-width:99%; - max-height:75%; -} diff --git a/hdoc_to_epub/file/stylesheet2.css b/hdoc_to_epub/file/stylesheet2.css new file mode 100644 index 0000000000000000000000000000000000000000..48a63521582360e194875f4ae1194586c9c83878 --- /dev/null +++ b/hdoc_to_epub/file/stylesheet2.css @@ -0,0 +1,143 @@ +body{ + margin: 0px; + padding: 0px; + height: 100%; + font: 12px Tahoma, Arial, Sans-serif; +} + +h1, h2, h3, h4, h5, h6{ + font-weight: bold; +} +h1{ + font-size: 1.8em; + color: #4463A1; + text-align: center; +} +h2{ + font-size:1.8em; + color:#4463A1; +} +h3{ + font-size: 1.4em; + color: #4463A1; +} +h4, h5, h6{ + font-size: 1.3em; + color: #4463A1; +} + +p{ + text-align: justify; + font-size: 1.2em; + margin: 0.2em 1em 0.7em 1em; +} + +table, td, th { + border: 1px solid #4463A1; + text-align: center; + font-size: 1.2em; +} + +td p, th p{ + text-align: center; + font-size: 15px; +} + +tr:first-child { + font-weight: bold; + color : white; + background-color : #4463A1; +} + +table { + border-collapse: collapse; + width: 100%; +} + +th { + padding: 10px; +} + +td{ + padding: 5px; +} + +.textTitle{ + float : left; +} + +.title{ + float : right; +} + +.border{ + background: #f5fcff; + border: 2px solid #4463A1; + box-shadow: 0px 5px 5px #888888; + padding: 5px; + clear: both; +} + +.warning{ + color:#cc0000; +} + +.borderWarning{ + background: #ffcccc; + border: 2px solid #cc0000; + box-shadow: 0px 5px 5px #888888; + padding: 5px; + clear: both; +} + +.noCut{ + page-break-inside: avoid; +} + +.titlePage{ + margin: 30vh 0 0 0; + text-align: center; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + font-size: 30px; +} + +.subTitlePage{ + text-align: center; + font-size: 15px; +} + +.bold{ + font-weight: bold; +} + +.imgContainer1{ + text-indent:0; + text-align:center; + margin-right:auto; + margin-left:auto; + width:99%; + page-break-before:auto; + page-break-inside:avoid; + page-break-after:auto; +} + +.imgContainer2{ + margin-left:0; + margin-right:0; + text-align:center; + text-indent:0; + height:100%; + width:100%; +} + +p .imgContainer3{ + display:inline-block; + text-indent:0; + width:100%; +} + +img{ + max-width:99%; + max-height:75%; +} diff --git a/hdoc_to_opale/xsl/transformation2.xsl b/hdoc_to_opale/xsl/transformation2.xsl index c1b738f14075d096602ba256c640c953ab0f79fb..3c2009c84dcc2b614e59dd8674a214632abfe1c4 100644 --- a/hdoc_to_opale/xsl/transformation2.xsl +++ b/hdoc_to_opale/xsl/transformation2.xsl @@ -629,6 +629,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -689,7 +758,7 @@ - + @@ -715,6 +784,15 @@ + + + + + + + + + diff --git a/hdoc_to_pdf/README.md b/hdoc_to_pdf/README.md index 77b9a5b0a1fd8ec56f35bbdc5b84093495c5ee1a..df9aa76dfc94202d2428ee2f743443c50d7b6d01 100644 --- a/hdoc_to_pdf/README.md +++ b/hdoc_to_pdf/README.md @@ -79,6 +79,7 @@ Generic Todo * Generate the ToC according to the converted (by XSL) headings of the hdoc * Handle as fully as possible of widows and girl orphans; trying to match Prince's layout and implementing the suitable CSS rules (which shall not be interpreted by FS) * Allow the user to override some specific CSS rules, according to the main layout logical rules +* Manage container.xml and content.xml validations using jing as jing task can't be handled with opale_to_pdf.ant call. * Bonus: find out a HTML editor to manually add line breaks to a hdoc file in order to resolve widows and girl orphans problems after the PDF file's generation Specific Todo list diff --git a/hdoc_to_pdf/hdoc_to_pdf.ant b/hdoc_to_pdf/hdoc_to_pdf.ant index 8a869adaf498765855f22d9815958836610192a1..ee66a3bef897993143fb0514f98d898a65a384a3 100644 --- a/hdoc_to_pdf/hdoc_to_pdf.ant +++ b/hdoc_to_pdf/hdoc_to_pdf.ant @@ -6,7 +6,11 @@ - + @@ -66,14 +70,14 @@ - + diff --git a/hdoc_to_pdf/xsl/find_content.xsl b/hdoc_to_pdf/xsl/find_content.xsl index 69ff413216276499ae63faee70489ee05aad5c9f..95c0ce2167319b63306f4238c8e0b1a358bd1744 100644 --- a/hdoc_to_pdf/xsl/find_content.xsl +++ b/hdoc_to_pdf/xsl/find_content.xsl @@ -14,11 +14,11 @@ - + @@ -48,14 +48,14 @@ - + diff --git a/hdoc_to_pdf/xsl/last_transformer.xsl b/hdoc_to_pdf/xsl/last_transformer.xsl index 501779854072ffce0b0729716a8d2e3f0f5d9b0a..463421555272fe70eff04e906de118a9f6a2cdd0 100644 --- a/hdoc_to_pdf/xsl/last_transformer.xsl +++ b/hdoc_to_pdf/xsl/last_transformer.xsl @@ -27,6 +27,26 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/opale_to_canoprof/README.md b/opale_to_canoprof/README.md new file mode 100644 index 0000000000000000000000000000000000000000..35836ad1a7743c7746e2593a378d879e65143aaa --- /dev/null +++ b/opale_to_canoprof/README.md @@ -0,0 +1,56 @@ +Liste des fonctions du convertisseur wikipedia_to_canoprof + + + +Une activité est composée de : +- Entete : + titre + Durée => Ne peut pas être renseignée à partir de wiki + organisation => Faisable + résumé => Concrètement le 1e paragraphe du wiki + Compétences du socle/ Notions et compétences/ métadonnées d'indexation => Correspond à quoi concrétement ? +- (Section | element)* +Les éléments sont : + *Information + *Attention + *Complément + *Conseil + *Définition + *Exemple + *Hypothèse + *Méthode + *Rappel + *Question avec corrigé masqué ou non + => Pas forcément utile dans le cas où les articles wikipédia ne comportent pas de QCM + + +Les sections sont composées : section(titre,element*) +*titre +*element + + +Chaque element est decoupé en : element(titre?,contenu) +Contenu est de la forme : + 1.Texte multimédia (paragraphe)* + paragraphe : + possibilité de mise en page + + + Citation (paragraphe) + Indice + Exposant + Liens Web (url,titre,description) -> Utilité de description ? + Lien vers activité = sc:uLink role="activity" + Lien vers média = sc:uLink role="media" + Illustration = + Inline image + Liste = puce ou ordonné + Tableau => A priori pas utile, parce qu'avec Wikipédia, ca sera texte + url + image c'est tout + Les tableaux seront sous forme d'image + + 2.Texte vis-à-vis = pas utile pour la transfo + 3.Zone de saisie élève , consigne élève, remarque professeur => pas utiles non plus + +Mise en relation hdoc // Canoprof + + \ No newline at end of file diff --git a/opale_to_canoprof/lib/ant-contrib.jar b/opale_to_canoprof/lib/ant-contrib.jar new file mode 100644 index 0000000000000000000000000000000000000000..062537661a514c2ce97d18948f4f25f7226cc1a0 Binary files /dev/null and b/opale_to_canoprof/lib/ant-contrib.jar differ diff --git a/opale_to_canoprof/lib/ant-launcher.jar b/opale_to_canoprof/lib/ant-launcher.jar new file mode 100644 index 0000000000000000000000000000000000000000..939abb57975f5ba08484e582f84ed3702d570a89 Binary files /dev/null and b/opale_to_canoprof/lib/ant-launcher.jar differ diff --git a/opale_to_canoprof/lib/ant.jar b/opale_to_canoprof/lib/ant.jar new file mode 100644 index 0000000000000000000000000000000000000000..7f5be4a4e05939429353a90e882846aeac72b976 Binary files /dev/null and b/opale_to_canoprof/lib/ant.jar differ diff --git a/opale_to_canoprof/lib/saxon9he.jar b/opale_to_canoprof/lib/saxon9he.jar new file mode 100644 index 0000000000000000000000000000000000000000..4e635175be11bc83187a2525f2a821bb85a1a566 Binary files /dev/null and b/opale_to_canoprof/lib/saxon9he.jar differ diff --git a/opale_to_canoprof/opale_to_canoprof.ant b/opale_to_canoprof/opale_to_canoprof.ant new file mode 100644 index 0000000000000000000000000000000000000000..4087e05b7b057c7466bf63a4e2e68768b498311c --- /dev/null +++ b/opale_to_canoprof/opale_to_canoprof.ant @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/opale_to_canoprof/opale_to_canoprof.properties b/opale_to_canoprof/opale_to_canoprof.properties new file mode 100644 index 0000000000000000000000000000000000000000..c0e957674e85b1187b83731d7d4650853c58d1fb --- /dev/null +++ b/opale_to_canoprof/opale_to_canoprof.properties @@ -0,0 +1,14 @@ +in = ${basedir}/input +out = ${basedir}/output +tmp = ${basedir}/tmp +xsl = ${basedir}/xsl +lib = ${basedir}/lib +log = ${basedir}/log + +opa_in = ../opale_to_hdoc/input +opa_out = ../opale_to_hdoc/output + +cano_in = ../hdoc_to_canoprof/input +cano_out = ../hdoc_to_canoprof/output + +rootfilename = content.xml \ No newline at end of file diff --git a/opale_to_elasticSearch/README.md b/opale_to_elasticSearch/README.md index 8ff0794e009bc2560532f6f4f679d0421071d430..5b2d77a05e1fd4ad3f0e4bc1c9a83ab9be6352e3 100644 --- a/opale_to_elasticSearch/README.md +++ b/opale_to_elasticSearch/README.md @@ -6,7 +6,7 @@ License GPL3.0 http://www.gnu.org/licenses/gpl-3.0.txt ## Credits ------------- -DELAUNAY Grégory +DELAUNAY Grégory KELLER Vincent ## Presentation @@ -22,8 +22,25 @@ Opale to ElasticSearch module extract data from an Opale file to use it with Ela ## User Story ------------- -"Vous disposez d'un ensemble de contenus Opale à votre disposition et vous aimeriez pouvoir l'analyser selon les différents types d'éléments possibles : cours, exercices, notions tout en permettant de trier par rapport aux différents sujets de ces dit contenus. -Pour se faire, vous mettrez les contenus que vous voulez analyser en input de opale_to_elasticSearch et vous lancerez le script lançant le fichier ANT. -Vous pourrez ensuite accéder à des graphiques Kibana à une adresse donnée et paramétrer vos graphiques afin d'obtenir les informations qui vous intéresse. +"Vous disposez d'un ensemble de contenus Opale à votre disposition et vous aimeriez pouvoir l'analyser selon les différents types d'éléments possibles : cours, exercices, notions tout en permettant de trier par rapport aux différents sujets de ces dit contenus. +Pour se faire, vous mettrez les contenus que vous voulez analyser en input de opale_to_elasticSearch et vous lancerez le script lançant le fichier ANT. +Vous pourrez ensuite accéder à des graphiques Kibana à une adresse donnée et paramétrer vos graphiques afin d'obtenir les informations qui vous intéresse. -A savoir que les contenus opale de plusieurs machines/utilisateurs peuvent être capitalisés car l'ensemble des instances de base elasticSearch installées forment un cluster accessible via l'interface Kibana" +A savoir que les contenus opale de plusieurs machines/utilisateurs peuvent être capitalisés car l'ensemble des instances de base elasticSearch installées forment un cluster accessible via l'interface Kibana" + +##Utilisation +------------- +L'utilisation complète d'opale_to_elasticSearch nécessite l'utilisation de la stack ELK (ElasticSearch, Logstash, Kibana). +- Télécharger ElasticSearch : https://www.elastic.co/fr/downloads/elasticsearch +- Télécharger Logstash : https://www.elastic.co/fr/downloads/logstash +- Télécharger Kibana : https://www.elastic.co/fr/downloads/kibana +- Télécharger le fichier de conf de Logstash : https://www.dropbox.com/s/lkz3dgmto2d378m/esconf.conf?dl=0 +- Mettre le fichier téléchargé dans %{dossier_installation_logstash}/ + +Etapes : +- aller dans votre dossier d'installation d'elasticsearch et lancer bin/elasticsearch +- aller dans votre dossier d'installation de kibana et lancer bin/kibana +- aller dans votre dossier d'installation de logstash et lancer bin/logstash - f esconf.conf +- lancer la transformation opale_to_elasticsearch en mettant d'abord les *.scar dans opale_to_elasticsearch/input +- Normalement les log de logstash indique l'insertion des sorties de la transformation, il arrive pour le moment qu'il ne le fasse qu'au moment où logstash s'arrête, l'arrêter alors. +- aller sur http://localhost:5601/app/kibana#/dashboard/NF29_DATA_DASHBOARD?_g=(filters%3A!()%2CrefreshInterval%3A(display%3AOff%2Cpause%3A!f%2Cvalue%3A0)%2Ctime%3A(from%3Anow%2Fy%2Cmode%3Aquick%2Cto%3Anow%2Fy)) \ No newline at end of file diff --git a/opale_to_elasticSearch/build.properties b/opale_to_elasticSearch/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..c9f5f3944c9203a16bfa929c0a0c1d4281d26efb --- /dev/null +++ b/opale_to_elasticSearch/build.properties @@ -0,0 +1,8 @@ +libdir=${basedir}/lib +xsldir=${basedir}/xsl +inputPath=${basedir}/input +outputPath=${basedir}/logstash/input +inputOpaleToHdoc=../opale_to_hdoc/input +outputOpaleToHdoc=../opale_to_hdoc/output +inputHdocToElasticSearch=../hdoc_to_elasticSearch/input +outputHdocToElasticSearch=../hdoc_to_elasticSearch/output \ No newline at end of file diff --git a/opale_to_elasticSearch/lib/ant-contrib-0.3.jar b/opale_to_elasticSearch/lib/ant-contrib-0.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..062537661a514c2ce97d18948f4f25f7226cc1a0 Binary files /dev/null and b/opale_to_elasticSearch/lib/ant-contrib-0.3.jar differ diff --git a/opale_to_elasticSearch/lib/ant-launcher.jar b/opale_to_elasticSearch/lib/ant-launcher.jar new file mode 100644 index 0000000000000000000000000000000000000000..939abb57975f5ba08484e582f84ed3702d570a89 Binary files /dev/null and b/opale_to_elasticSearch/lib/ant-launcher.jar differ diff --git a/opale_to_elasticSearch/lib/ant.jar b/opale_to_elasticSearch/lib/ant.jar new file mode 100644 index 0000000000000000000000000000000000000000..7f5be4a4e05939429353a90e882846aeac72b976 Binary files /dev/null and b/opale_to_elasticSearch/lib/ant.jar differ diff --git a/opale_to_elasticSearch/lib/saxon9he.jar b/opale_to_elasticSearch/lib/saxon9he.jar new file mode 100644 index 0000000000000000000000000000000000000000..4e635175be11bc83187a2525f2a821bb85a1a566 Binary files /dev/null and b/opale_to_elasticSearch/lib/saxon9he.jar differ diff --git a/framapad_to_opale/output/.gitkeep b/opale_to_elasticSearch/logstash/input/.gitkeep similarity index 100% rename from framapad_to_opale/output/.gitkeep rename to opale_to_elasticSearch/logstash/input/.gitkeep diff --git a/opale_to_elasticSearch/opale_to_elasticsearch.ant b/opale_to_elasticSearch/opale_to_elasticsearch.ant new file mode 100644 index 0000000000000000000000000000000000000000..51e2eecaf42a9c0446d441ace1ddde81083259f0 --- /dev/null +++ b/opale_to_elasticSearch/opale_to_elasticsearch.ant @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/opale_to_elasticSearch/run.bat b/opale_to_elasticSearch/run.bat new file mode 100644 index 0000000000000000000000000000000000000000..3d472dab4952f7ac4b3981d39e9ce3ef378eb466 --- /dev/null +++ b/opale_to_elasticSearch/run.bat @@ -0,0 +1,11 @@ +@echo off +set lib=lib +set ant=opale_to_elasticsearch.ant +set antparam=-Dprogram.param=%1 + +set scJarList=%lib%\* + +java.exe -classpath "%scJarList%" -Xmx150m org.apache.tools.ant.Main -buildfile %ant% %antparam% +pause + +REM start /MIN java.exe -classpath "%scJarList%" -Xmx150m org.apache.tools.ant.Main -buildfile %ant% %antparam% diff --git a/opale_to_elasticSearch/run.sh b/opale_to_elasticSearch/run.sh new file mode 100644 index 0000000000000000000000000000000000000000..787f3e7a53032aff227ebad1fad46613a6355ec1 --- /dev/null +++ b/opale_to_elasticSearch/run.sh @@ -0,0 +1,35 @@ +#!/bin/sh +lib="lib" +ant="opale_to_elasticsearch.ant" +antparam="-Dprogram.param=$1" + +#Recherche de java et controle que se soit une version SUN +vJavaCmd="java" +xCheckJava () { + vInputVarName=\$"$1" + vInputVarVal=`eval "expr \"$vInputVarName\" "` + if [ -z "$vInputVarVal" ];then + eval "$1=false" + return + fi + vSunJavaFound=`$vInputVarVal -version 2>&1 | grep -Eo -m 1 "(HotSpot)|(OpenJDK)"` + if [ "$vSunJavaFound" != "HotSpot" ] && [ "$vSunJavaFound" != "OpenJDK" ] ; then + eval "$1=false" + return + fi +} +xCheckJava vJavaCmd +if [ "$vJavaCmd" = "false" ]; then + vJavaCmd="$JAVA_HOME/bin/java" + xCheckJava vJavaCmd + if [ "$vJavaCmd" = "false" ]; then + echo "ERREUR: JRE de SUN introuvable. Veuillez déclarer la variable d'environnement JAVA_HOME." + exit 1 + fi +fi + +#Lancer la commande +scJarList="$lib/*" + + +$vJavaCmd -classpath "$scJarList:" -Xmx150m org.apache.tools.ant.Main -buildfile $ant $antparam diff --git a/opale_to_elasticSearch/sample/es-1_2017-1-4.scar b/opale_to_elasticSearch/sample/es-1_2017-1-4.scar new file mode 100644 index 0000000000000000000000000000000000000000..5498a7537bec657f4ea407e9c634764117f8fadd Binary files /dev/null and b/opale_to_elasticSearch/sample/es-1_2017-1-4.scar differ diff --git a/schemas/xhtml/type.rng b/schemas/xhtml/type.rng index b056a3d92635235943fcb86d09d64238bf1a623d..cada2ae0310600ea67bb30f1d8991f3303694f09 100644 --- a/schemas/xhtml/type.rng +++ b/schemas/xhtml/type.rng @@ -58,6 +58,8 @@ explanation explanation-choice-correct explanation-choice-incorrect + openQuestion + hint diff --git a/wikipedia_to_hdoc/ant/wiki_to_hdoc_fetcher.ant b/wikipedia_to_hdoc/ant/wiki_to_hdoc_fetcher.ant index 47ee1a06b940575d0a753750d74ed02403760460..40eb1bd062264d6b012aa627840cae0f8c1fc2fe 100644 --- a/wikipedia_to_hdoc/ant/wiki_to_hdoc_fetcher.ant +++ b/wikipedia_to_hdoc/ant/wiki_to_hdoc_fetcher.ant @@ -1,4 +1,5 @@ + @@ -21,6 +22,7 @@ + @@ -75,7 +77,29 @@ - + + + + + + + + + + + + + + + + @{file} + + + + diff --git a/wikipedia_to_hdoc/xslt/prepare_img_link_metadata.xsl b/wikipedia_to_hdoc/xslt/prepare_img_link_metadata.xsl new file mode 100644 index 0000000000000000000000000000000000000000..619ef1c1b19d623f31f0e0a9ef7186762248219b --- /dev/null +++ b/wikipedia_to_hdoc/xslt/prepare_img_link_metadata.xsl @@ -0,0 +1,25 @@ + + + + + + + + + + + + + https://fr.wikipedia.org + + + + + + + + + \ No newline at end of file