Commit 3752b98d authored by Baptiste Perraud's avatar Baptiste Perraud

merge last_transformer.xsl

parents f8912385 384c0b3c
[submodule "hdoc_to_mongo/node_modules/node-mongodb-native"]
path = hdoc_to_mongo/node_modules/node-mongodb-native
url = https://github.com/mongodb/node-mongodb-native.git
......@@ -10,6 +10,21 @@
</xsl:template>
<xsl:template match="//ul[parent::ul or parent::ol]" priority="1">
<li>
<ul>
<xsl:apply-templates select="*"/>
</ul>
</li>
</xsl:template>
<xsl:template match="//ol[parent::ul or parent::ol]" priority="1">
<li>
<ol>
<xsl:apply-templates select="*"/>
</ol>
</li>
</xsl:template>
<!--Identity template,
provides default behavior that copies all content into the output -->
<xsl:template match="@*|node()">
......
......@@ -6,12 +6,12 @@
<xsl:template match="ul">
<ul>
<xsl:apply-templates select="*"/>
</ul><br/>
</ul>
</xsl:template>
<xsl:template match="ol">
<ol>
<xsl:apply-templates select="*"/>
</ol><br/>
</ol>
</xsl:template>
<xsl:template match="@*|node()">
......
......@@ -48,8 +48,14 @@
<xsl:apply-templates select="*"/>
</ol>
</xsl:template>
<xsl:template match="h1 | h2 | h3 | h4 | h5 | h6">
Titre (non pris en compte pour l'instant) :
<xsl:apply-templates select="@*|node()"/>
</xsl:template>
<xsl:template match="code">
Code (non pris en compte pour l'instant) :
<xsl:apply-templates select="@*|node()"/>
</xsl:template>
<xsl:template match="page">
<xsl:apply-templates select="@*|node()"/>
</xsl:template>
......@@ -59,4 +65,4 @@
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
\ No newline at end of file
</xsl:stylesheet>
......@@ -20,6 +20,10 @@ Dependencies
---
There's no particular dependencies needed to run the converter.
Conditions particulières
---
Pour le moment, il ne faut pas utilisé les "sous-Division" de Opale. Les divisions à la racine sont autorisées.
User Story
---
### Running the script
......
This diff is collapsed.
......@@ -12,7 +12,22 @@ Kapilraj Thangeswaran
This module is able to extract data from a file in Hdoc format and insert them into MongoDB.
## Dependencies
No dependance needed.
In order to make this project work you have to install Node.js from the following link : https://nodejs.org/en/
## Instructions
- Install dependencies.
- Then edit the file "config.json" in the "mongo" folder (for more details, please check "Mongo configuration")
- Execute run.bat or run.sh
## Mongo configuration
Use "config.json" in the "mongo" folder to specify :
- url : your mongodb's url
- database : the database you are using
- collection : the collection you are using
- request : the request you want to perform (for allowed requests, please check "Supported requests")
## Supported requests
- insert
## User stories
En tant qu’utilisateur rédigeant des documents sous opale, je veux récupérer les exercices corrigés d’un sujet donné dans le but de les réutiliser.
......
libdir=${basedir}/lib
xsldir=${basedir}/xsl
hdocdir=${basedir}/hdoc
tmpdir=${basedir}/tmp
inputPath=${basedir}/input
outputPath=${basedir}/output
{
"url" : "http://172.25.31.252:28017/test",
"collection" : "nf29"
}
\ No newline at end of file
......@@ -4,74 +4,27 @@
<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.1.min.js" ></script>
<script type="text/javascript">
jQuery("document").ready(function () {
var myData = [{
"title":
"XSLT (oprations avances): expressions rgulires et fichiers texte"
,
"authors":
"Karim El Aktaa (Contributions: Stphane Crozat et les tudiants de NF29)"
,
"keywords":
[
"XSL"
,
"XSLT"
,
"XSL-XSLT"
,
"Expression rgulire"
]
,
"rights":
"by-sa"
,
"introduction":
"XSL-XSLT est un langage de programmation qui permet notamment de manipuler des documents XML. Ce module a pour but de vous apporter des connaissances plus approfondies sur ce langage que vous connaissez dj: l'utilisation de document non XML et d'expressions rgulires."
},
{
"title":
"XSLT (oprations avances): expressions rgulires et fichiers texte"
,
"authors":
"Karim El Aktaa (Contributions: Stphane Crozat et les tudiants de NF29)"
,
"keywords":
[
"XSL"
,
"XSLT"
,
"XSL-XSLT"
,
"Expression rgulire"
]
,
"rights":
"by-sa"
,
"introduction":
"XSL-XSLT est un langage de programmation qui permet notamment de manipuler des documents XML. Ce module a pour but de vous apporter des connaissances plus approfondies sur ce langage que vous connaissez dj: l'utilisation de document non XML et d'expressions rgulires."
}]
for (var item in myData) {
var model = jQuery("div[name='toFill']").first().clone();
model.find("a[name='link']").attr("href", "title.html#" + encodeURI(JSON.stringify(myData[item])));
model.find("span[name='title']").text(myData[item].title);
model.css("display", "block")
model.appendTo(jQuery("body").first());
}
$.getJSON('config.json', function (config) {
$.ajax({
url: config.url + "/" + config.collection + "/",
type: 'get',
dataType: 'jsonp',
jsonp: 'jsonp', // mongod is expecting the parameter name to be called "jsonp"
cache: false,
success: function (myData) {
for (var item in myData.rows) {
var model = jQuery("div[name='toFill']").first().clone();
model.find("a[name='link']").attr("href", "title.html#" + encodeURI(JSON.stringify(myData.rows[item])));
model.find("span[name='title']").text(myData.rows[item].title);
model.css("display", "block")
model.appendTo(jQuery("body").first());
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log('error', errorThrown + " " + textStatus);
}
});
});
});
</script>
</head>
......
npm link mongodb
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<container version="1.0" xmlns="urn:utc.fr:ics:hdoc:container">
<rootfiles>
<rootfile full-path="content.xml" media-type="text/xml" />
</rootfiles>
</container>
<?xml version="1.0" encoding="UTF-8"?>
<?oxygen RNGSchema="http://hdoc.crzt.fr/schemas/xhtml/hdoc1-xhtml.rng" type="xml"
?><html xmlns="http://www.utc.fr/ics/hdoc/xhtml" xmlns:sc="http://www.utc.fr/ics/scenari/v3/core" xmlns:sp="http://www.utc.fr/ics/scenari/v3/primitive" xmlns:op="utc.fr:ics/opale3"><head><title>XSLT (opérations avancées) : expressions régulières et fichiers texte</title><meta charset="utf-8"/><meta content="HdocConverter/Opale3.4" name="generator"/><meta name="keywords" content="XSL"/><meta name="keywords" content="XSLT"/><meta name="keywords" content="XSL-XSLT"/><meta name="keywords" content="Expression régulière"/><meta name="rights" content="by-sa"/><meta name="author" content="Karim El Aktaa (Contributions : Stéphane Crozat et les étudiants de NF29)"/></head><body><section><header><h1>Objectifs</h1></header><div><ul><li><p>Utiliser un fichier de texte brut non XML</p></li><li><p>Utiliser des expressions régulières</p></li></ul></div></section><section data-hdoc-type="introduction"><header><h1>Introduction</h1></header><div><p>XSL-XSLT est un langage de programmation qui permet notamment de manipuler des documents XML.</p><p>Ce module a pour but de vous apporter des connaissances plus approfondies sur ce langage que vous connaissez déjà : l'utilisation de document non XML et d'expressions régulières.</p></div></section><section><header><h1>Cours</h1></header><section><header><h1>Lecture de fichier texte non XML</h1></header><div><h6>Introduction</h6><p>Dans cette partie du cours, nous allons voir comment utiliser un fichier texte brut (non XML) avec le langage XSLT.</p></div><div data-hdoc-type="complement"><h6>Limitation du XSLT</h6><p>Dans son principe de fonctionnement originel, XSLT est conçu pour prendre en entrée un fichier XML bien formé.</p></div><div data-hdoc-type="emphasis"><h6>Lecture de fichier non XML</h6><p>XSLT 2.0 introduit la possibilité de lire des fichiers texte qui ne sont pas nécessairement des fichiers XML bien formés.</p><p>La fonction :</p><p>unparsed-text($href as xs:string?, $encoding as xs:string) as xs:string?</p><p>permet en effet de lire une ressource externe et de renvoyer le résultat sous forme d'une chaîne de caractères.</p><p>L'argument <em>$href</em> correspond à l'URI de la ressource externe à lire.</p><p>Il est également possible de préciser un encodage spécifique via l'argument optionnel <em>$encoding</em>.</p></div><div data-hdoc-type="example"><h6>Exemple de lecture d'un fichier texte non XML</h6><p>Lecture du fichier <em>txt.txt</em>, en utilisant l'encoding <em>iso-8859-1</em>. La fonction <em>unparsed-text(...)</em> récupère le contenu du fichier et renvoie le résultat sous forme d'une chaîne de caractère à la commande <em>xsl :value-of</em>, qui affiche donc le contenu du fichier lu.</p><p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0"&gt;
&lt;xsl:output method="text"&gt;&lt;/xsl:output&gt;
&lt;xsl:template match="/"&gt;
&lt;xsl:value-of select="unparsed-text('txt.txt', 'iso-8859-1')" disable-output-escaping="yes"/&gt;
&lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;</p><p>Le paramètre <em>disable-output-escaping</em>, permet d'indiquer si les caractères spéciaux (comme '&lt;' par exemple) sont échappés ou non.</p></div><div data-hdoc-type="advice"><h6>Comment lancer la transformation sans fichier XML source ?</h6><p>Habituellement l'utilisation d'une transformation XSLT se fait via le document XML source (en utilisant la <i>processing instruction</i> <q>&lt;?xml-stylesheet ... ?&gt;</q>).</p><p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;?xml-stylesheet type="xsl" href="poeme.xsl"?&gt;
&lt;poeme titre="The Stone Troll" auteur="JRR Tolkien"&gt;
&lt;strophe&gt;
&lt;vers&gt;Troll sat alone on his seat of stone,&lt;/vers&gt;
&lt;vers&gt;And munched and mumbled a bare old bone;&lt;/vers&gt;
&lt;/strophe&gt;
&lt;strophe&gt;
&lt;vers&gt;Up came Tom with his big boots on.&lt;/vers&gt;
&lt;vers&gt;Said he to Troll: 'Pray, what is yon?&lt;/vers&gt;
&lt;/strophe&gt;
&lt;/poeme&gt;</p><p>Pour pallier ce principe, si on ne souhaite pas faire appel à un fichier XML source, il faut utiliser le fichier XSLT (qui est du XML) comme entrée.</p></div><footer/></section><section><header><h1>Expression régulière avec XSL-XSLT</h1></header><div><h6>Introduction</h6><p>Dans cette partie du cours, nous allons voir comment utiliser des expressions régulières avec le langage XSLT, après avoir fait un rappel sur ce que sont les expressions régulières.</p></div><div data-hdoc-type="emphasis"><h6>Qu'est ce qu'une expression régulière ?</h6><p><q>Une expression régulière est une chaîne de caractères que l'on appelle parfois un motif et qui décrit un ensemble de chaînes de caractères possibles selon une syntaxe précise.</q></p><p>Une expression régulière est une suite de caractères typographiques (un « motif » ou « pattern ») décrivant une chaîne de caractères dans le but de la trouver dans un bloc de texte pour lui appliquer un traitement automatisé, comme un ajout, son remplacement ou sa suppression.</p><p>Syntaxe des expressions régulières dans XSL-XSLT/XPath.</p></div><div data-hdoc-type="example"><h6>Exemples d'expressions régulières</h6><table><caption>Exemples de regex</caption><tr><td><p>Expression régulière</p></td><td><p>Résultats</p></td></tr><tr><td><p>a</p></td><td><p>match le caractère a seul</p></td></tr><tr><td><p>a+b</p></td><td><p>match les mots commençants par a suivi de de zéro ou plusieurs a et finissant par b</p></td></tr><tr><td><p>[a-z]{5}</p></td><td><p>match les mots composés de 5 caractères compris entre a et z</p></td></tr><tr><td><p>a\.b+c?</p></td><td><p>match : a.b, a.bc, a.bb, a.bbc, a.bbbc...</p></td></tr><tr><td><p>(http|https|ftp):\/\/([a-zA-Z0-9]*)\.([a-zA-Z0-9]*)\.(com|net)</p></td><td><p>Pattern simpliste d'adresse web</p></td></tr></table></div><div data-hdoc-type="advice"><h6>Expressions régulières avec oXygen</h6><p>Outils -&gt; Constructeur des expressions régulières</p></div><div data-hdoc-type="emphasis"><h6>Les expressions régulières dans XSL-XSLT</h6><p>Dans le langage XSL-XSLT il y a 4 fonctions qui permettent d'utiliser les expressions régulières :</p><ol><li><p><em>tokenize</em></p></li><li><p><em>matches</em></p></li><li><p><em>replace</em></p></li><li><p><em>xsl:analyze-string</em></p></li></ol></div><div data-hdoc-type="emphasis"><h6>Tokenize</h6><p>La fonction <em>tokenize($input, $pattern)</em> est pratique car elle permet de séparer une chaîne de caractères en une séquence de chaînes de caractères.</p><p>L'argument<em> $input</em> désigne la chaîne de caractère d'entrée, et l'argument <em>$pattern</em> désigne le pattern (ou expression régulière) qui match le délimiteur choisi.</p></div><div data-hdoc-type="example"><h6>Exemple de récupération d'un fichier texte et de tokenize</h6><p>On cherche à lire un fichier texte et à remplacer les sauts de lignes par des points virgules.</p><p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0"&gt;
&lt;xsl:output method="text"&gt;&lt;/xsl:output&gt;
&lt;xsl:template match="/"&gt;
&lt;xsl:for-each select="tokenize(unparsed-text('txt.txt', 'iso-8859-1'), '\r?\n')"&gt;
&lt;xsl:copy&gt;&lt;/xsl:copy&gt;&lt;xsl:text&gt;;&lt;/xsl:text&gt;
&lt;/xsl:for-each&gt;
&lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;
</p></div><div data-hdoc-type="emphasis"><h6>Matches</h6><p>La fonction <em>matches</em><em>($input, $pattern)</em> permet de vérifier si <em>$input</em> match l'expression régulière <em>$pattern</em>.</p></div><div data-hdoc-type="emphasis"><h6>Replace</h6><p>La fonction <em>replace</em><em>($input, $pattern, $replacement)</em> permet de remplacer les parties de <em>$input</em> qui matchent <em>$pattern</em> avec <em>$replacement</em>.</p></div><div data-hdoc-type="emphasis"><h6>Analyse de chaîne de caractère</h6><p>L'instruction <em>xsl:analyze-string</em> permet d'analyser une chaîne de caractère en fonction d'une expression régulière. On peut accéder aux sous chaînes de caractères qui correspondent à l'expression régulière avec l'instruction <em>xsl:matching-substring</em>, et inversement aux sous chaînes de caractères qui ne correspondent pas à la regex avec <em>xsl:non-matching-substring</em>.</p><p>&lt;xsl:analyze-string
select = expression
regex = { string }
flags? = { string }&gt;
&lt;!-- Content: (xsl:matching-substring?, xsl:non-matching-substring?, xsl:fallback*) --&gt;
&lt;/xsl:analyze-string&gt;</p></div><div data-hdoc-type="example"><h6>Exemple d'analyse de string avec une regex</h6><p>Cet exemple remplace tout les caractères '\n' (newline) par la balise &lt;br/&gt;.</p><p>&lt;xsl:analyze-string select="abstract" regex="\n"&gt;
&lt;xsl:matching-substring&gt;
&lt;br/&gt;
&lt;/xsl:matching-substring&gt;
&lt;xsl:non-matching-substring&gt;
&lt;xsl:value-of select="."/&gt;
&lt;/xsl:non-matching-substring&gt;
&lt;/xsl:analyze-string&gt;
</p></div><footer/></section><footer/></section><section><header><h1>Exercices</h1></header><footer/></section></body></html>
application/x-hdoc+zip
\ No newline at end of file
<project name="hdoc_to_optim" default="main">
<project name="hdoc_to_optim" default="insertion">
<property file="build.properties"/>
<target name="preparation">
<mkdir dir="${hdocdir}"/>
<chmod perm="777" dir="${hdocdir}"></chmod>
<mkdir dir="${tmpdir}"/>
<chmod perm="777" dir="${tmpdir}"></chmod>
<delete dir="${outputPath}" />
<mkdir dir="${outputPath}"/>
<chmod perm="777" dir="${outputPath}"></chmod>
......@@ -19,14 +19,20 @@
<echo>Entry file : ${hdocFilePath}</echo>
<!--unzips the hdoc to be converted-->
<unzip dest="${hdocdir}" src ="${hdocFilePath}"/>
<unzip dest="${tmpdir}" src ="${hdocFilePath}"/>
</target>
<target name="main" depends="unzipSource">
<xslt in="${hdocdir}/content.xml" out="${outputPath}/result.json" style="xsl/main.xsl"/>
<target name="convertHdoc" depends="unzipSource">
<xslt in="${tmpdir}/content.xml" out="${outputPath}/result.json" style="xsl/main.xsl"/>
</target>
<target name="insertion" depends="convertHdoc">
<exec executable="node" dir="mongo">
<arg line="main.js"/>
</exec>
</target>
<target name="clean" depends="unzipSource">
<delete dir="${hdocdir}" />
<delete dir="${tmpdir}" />
</target>
</project>
\ No newline at end of file
{
"url" : "mongodb://localhost:27017/",
"database" : "test",
"collection" : "nf29",
"request" : "insert"
}
\ No newline at end of file
const fs = require('fs');
const config = JSON.parse(fs.readFileSync('config.json'));
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
const ObjectId = require('mongodb').ObjectID;
console.log(config['url'] + "/" + config['database']);
var url = config['url'];
if(url.slice(-1) == "/") {
url += config['database'];
} else {
url += "/" + config['database'];
}
const resultFile = '../output/result.json';
var insertDocument = function(db, collection, json, callback) {
db.collection(collection).insertOne(json, function(err, result) {
assert.equal(err, null);
console.log("Inserted a document into the " + collection + " collection.");
callback();
});
};
MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
if(config['request'] === 'insert') {
insertDocument(db, config['collection'], JSON.parse(fs.readFileSync(resultFile)), function() {
db.close();
});
}
});
\ No newline at end of file
......@@ -5,7 +5,6 @@ set antparam=-Dprogram.param=%1
set scJarList=%lib%\*
java.exe -classpath "%scJarList%" -Xmx150m org.apache.tools.ant.Main -buildfile %ant% %antparam%
pause
npm link mongodb & java.exe -classpath "%scJarList%" -Xmx150m org.apache.tools.ant.Main -buildfile %ant% %antparam% & rmdir /Q /S node_modules & pause
REM start /MIN java.exe -classpath "%scJarList%" -Xmx150m org.apache.tools.ant.Main -buildfile %ant% %antparam%
......@@ -31,5 +31,6 @@ fi
#Lancer la commande
scJarList="$lib/*"
npm link mongodb
$vJavaCmd -classpath "$scJarList:" -Xmx150m org.apache.tools.ant.Main -buildfile $ant $antparam
rm -rf node_modules
......@@ -617,6 +617,7 @@
<sc:choices>
<xsl:apply-templates select="./h:div[@data-hdoc-type = 'choice-correct' or @data-hdoc-type = 'choice-incorrect']"/>
</sc:choices>
<sc:globalExplanation>
......@@ -639,12 +640,27 @@
<xsl:template match="h:div[@data-hdoc-type = 'choice-correct']">
<sc:choice solution="checked">
<xsl:call-template name="choice" />
<sc:choiceExplanation>
<op:txt>
<sc:para>
<xsl:apply-templates select="./h:div[@data-hdoc-type = 'explanation-choice-correct']/h:p/text()"/>
</sc:para>
</op:txt>
</sc:choiceExplanation>
</sc:choice>
</xsl:template>
<xsl:template match="h:div[@data-hdoc-type = 'choice-incorrect']">
<sc:choice solution="unchecked">
<xsl:call-template name="choice" />
<sc:choiceExplanation>
<op:txt>
<sc:para>
<xsl:apply-templates select="./h:div[@data-hdoc-type = 'explanation-choice-incorrect']/h:p/text()"/>
</sc:para>
</op:txt>
</sc:choiceExplanation>
</sc:choice>
</xsl:template>
......
......@@ -6,10 +6,12 @@
<pathelement location="lib/ant-contrib.jar"/>
</classpath>
</taskdef>
<taskdef name="jing" classname="com.thaiopensource.relaxng.util.JingTask"/>
<!-- Arguments properties -->
<property name="InputPath" location="input"/>
<property name="OutputPath" location="output"/>
<property name="Schema" location="schemas"/>
<property name="tmpdir" location="${basedir}/tmp"/>
<property name="OutputFileName" location="${OutputPath}/result.pdf"/>
......@@ -24,6 +26,8 @@
</target>
<target name="hdocPreparation">
......@@ -61,7 +65,17 @@
<!-- Gives all rights to avoid bugs-->
<chmod dir="${tmpdir}" perm="777"/>
<!-- Launches the XSLT find_content to retrieve the content path -->
<!-- Validating the XML container file -->
<trycatch property="foo" reference="bar">
<try>
<jing file="${tmpdir}/META-INF/container.xml" rngfile="${Schema}/container/hdoc1-container.rng"></jing>
</try>
<catch>
<echo>Validation failed</echo>
</catch>
</trycatch>
<!-- Launches the XSLT find_content to retrieve the content path -->
<xslt in="${tmpdir}/META-INF/container.xml" out="${tmpdir}/prepare_hdoc.ant" classpath="./lib/saxon9he.jar" style="xsl/find_content.xsl">
<param name="BaseDirectory" expression="${basedir}"/>
<param name="TempDirectory" expression="${tmpdir}"/>
......
<?xml version="1.0" encoding="UTF-8"?>
<grammar
xmlns="http://relaxng.org/ns/structure/1.0"
xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
ns="urn:utc.fr:ics:hdoc:container"
>
<a:documentation>This schema describes the META-INF/container.xml file for hdoc format</a:documentation>
<a:documentation>This schema is a derivation of http://www.idpf.org/epub/30/schema/ocf-container-30.rnc
from EPUB Open Container Format (http://www.idpf.org/epub/30/spec/epub30-ocf.html)
</a:documentation>
<start>
<element name="container">
<attribute name="version">
<value>1.0</value>
</attribute>
<element name="rootfiles">
<element name="rootfile">
<attribute name="full-path">
<data type="anyURI"/>
</attribute>
<attribute name="media-type">
<value>text/xml</value>
</attribute>
</element>
</element>
</element>
</start>
</grammar>
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
ns="http://www.utc.fr/ics/hdoc/xhtml">
<a:documentation>Last update : 2014-12-04</a:documentation>
<a:documentation>Changes since last update :
In order to manage quiz :
- Adding multiple-choice-question and fill-in-the-blank to section
- Adding question, choice-correct, choice-uncorrect and explanation to div
- Adding blank to span
- Externalizing ObjectType and VideoType from main schema
</a:documentation>
<!-- Type Microdata -->
<define name="SectionType">
<optional>
<attribute name="data-hdoc-type">
<choice>
<value>introduction</value>
<value>conclusion</value>
<value>unit-of-content</value>
<value>multiple-choice-question</value>
<value>fill-in-the-blank</value>
<value>division</value>
<value>grain</value>
<value>exercise</value>
<value>activity</value>
<value>aims</value>
<value>synthesis</value>
</choice>
</attribute>
</optional>
</define>
<define name="DivType">
<optional>
<attribute name="data-hdoc-type">
<choice>
<!-- block management -->
<value>emphasis</value>
<value>complement</value>
<value>definition</value>
<value>example</value>
<value>remark</value>
<value>warning</value>
<value>advice</value>
<!-- quiz management -->
<value>question</value>
<value>choice-correct</value>
<value>choice-incorrect</value>
<value>explanation</value>
<value>explanation-choice-correct</value>
<value>explanation-choice-incorrect</value>
</choice>
</attribute>
</optional>
</define>
<define name="SpanType">
<optional>
<attribute name="data-hdoc-type">
<choice>
<value>syntax</value>
<value>latex</value>
<!-- quiz management -->
<value>blank</value>
</choice>
</attribute>
</optional>
</define>
<define name="ObjectType">
<attribute name="type">
<choice>
<value>application/vnd.oasis.opendocument.graphics </value>
<value>application/vnd.oasis.opendocument.spreadsheet</value>
<value>application/pdf</value>
<value>application/x-listing</value>
</choice>
</attribute>
</define>
<define name="VideoType">
<attribute name="type">
<choice>
<value>video/mp4</value>
<value>video/ogg</value>
<value>video/webm</value>
</choice>
</attribute>
</define>
</grammar>
......@@ -22,4 +22,7 @@
</body>
</xsl:template>
<xsl:template match="footer[not(node())]"/>
</xsl:stylesheet>
......@@ -193,12 +193,14 @@
<text/>
</element>
</optional>
<ref name="Flow"/>
<optional>
<element name="div">
<ref name="DivType"/>
<ref name="Text"/>
</element>
</optional>
<ref name="Flow"/>
</element>
</oneOrMore>
</define>
......
......@@ -30,9 +30,9 @@
<target name="move_output_hdoc_wikipediaToHdoc_into_input_hdocToCanoprof">
<!--copy .hdoc file from wikipedia_to_hdoc_result into input of hdoc_to_canoprof -->
<!-- <delete dir="../hdoc_to_canoprof/input"/>
<delete dir="../hdoc_to_canoprof/input"/>
<mkdir dir="../hdoc_to_canoprof/input"/>
<copy todir="../hdoc_to_canoprof/input" file="../wikipedia_to_hdoc/result/${filename}/${filename}.hdoc"/> -->
<copy todir="../hdoc_to_canoprof/input" file="../wikipedia_to_hdoc/result/${filename}/${filename}.hdoc"/>
<mkdir dir="./testing_ant"/>
<copy todir="./testing_ant" file="../wikipedia_to_hdoc/result/${filename}/${filename}.hdoc"/>
</target>
......@@ -60,22 +60,22 @@
<!-- Run hdoc_to_canoprof bat -->
<target name="run_hdoc_to_canoprof_windows" if="${is_windows}">
<!-- <exec executable="cmd" dir="${hdoc_to_canoprof}">
<exec executable="cmd" dir="${hdoc_to_canoprof}">
<arg value="/c"/>
<arg value="${hdoc_to_canoprof}/run.bat"/>
</exec> -->
</exec>
</target>
<!-- Run hdoc_to_canoprof sh -->
<target name="run_hdoc_to_canoprof_unix" if="${is_unix}">
<!-- <exec executable="/bin/bash" dir="${hdoc_to_canoprof}">
<exec executable="/bin/bash" dir="${hdoc_to_canoprof}">
<arg value="${hdoc_to_canoprof}/run.sh"/>
</exec> -->
</exec>
</target>
<target name="move_output_hdocToCanoprof_into_ouput_wikipediaToCanoprof">
<!-- <copy todir="${resultPath}" failonerror="false">
<copy todir="${resultPath}" failonerror="false">
<fileset dir="../hdoc_to_canoprof/output" includes="**"/>
</copy> -->
</copy>
</target>
</project>
\ No newline at end of file
......@@ -18,10 +18,10 @@
</target>
<target name="move_output_hdoc_wikipediaToHdoc_into_input_hdocToCanoprof">
<!--copy .hdoc file from wikipedia_to_hdoc_result into input of hdoc_to_opale -->
<!--<delete dir="../hdoc_to_canoprof/input"/>
<!-- copy .hdoc file from wikipedia_to_hdoc_result into input of hdoc_to_canoprof -->
<delete dir="../hdoc_to_canoprof/input"/>
<mkdir dir="../hdoc_to_canoprof/input"/>
<copy todir="../hdoc_to_canoprof/input" file="../wikipedia_to_hdoc/result/${filename}/${filename}.hdoc"/> -->
<copy todir="../hdoc_to_canoprof/input" file="../wikipedia_to_hdoc/result/${filename}/${filename}.hdoc"/>
<mkdir dir="./testing_ant"/>
<copy todir="./testing_ant" file="../wikipedia_to_hdoc/result/${filename}/${filename}.hdoc"/>
</target>
......@@ -49,22 +49,22 @@
<!-- Run hdoc_to_canoprof bat -->
<target name="run_hdoc_to_canoprof_windows" if="${is_windows}">
<!--<exec executable="cmd" dir="${hdoc_to_canoprof}">
<exec executable="cmd" dir="${hdoc_to_canoprof}">
<arg value="/c"/>
<arg value="${hdoc_to_canoprof}/run.bat"/>
</exec>-->
</exec>
</target>
<!-- Run hdoc_to_canoprof sh -->
<target name="run_hdoc_to_canoprof_unix" if="${is_unix}">
<!--<exec executable="/bin/bash" dir="${hdoc_to_canoprof}">
<exec executable="/bin/bash" dir="${hdoc_to_canoprof}">
<arg value="${hdoc_to_canoprof}/run.sh"/>
</exec>-->
</exec>
</target>
<target name="move_output_hdocToCanoprof_into_ouput_wikipediaToCanoprof">
<!--<copy todir="${resultPath}" failonerror="false">
<copy todir="${resultPath}" failonerror="false">
<fileset dir="../hdoc_to_canoprof/output" includes="**"/>
</copy>-->
</copy>
</target>
</project>
\ No newline at end of file
......@@ -198,7 +198,9 @@
<xsl:template match="li[@class='gallerybox']" mode="#all">
<xsl:element name="{local-name()}" namespace="http://www.utc.fr/ics/hdoc/xhtml">
<img src="./ressources/{translate(tokenize(.//img/@src, '/')[last()],'?%','_')}" alt="{.//img/@alt}"/>
<p>
<xsl:value-of select=".//div[@class='galerytext']/p"/>
</p>
</xsl:element>
</xsl:template>
......@@ -494,6 +496,8 @@
match=" h2[following-sibling::div[@class='references-small decimal'] and preceding-sibling::h2][last()]"/>
<xsl:template match="h2[following-sibling::h3[span[@id='Notes']]][last()]"/>
<xsl:template match="div[@id='mw-navigation']/h2"/>
<xsl:template match="h2[span[@id='Voir_aussi']]"/>
<xsl:template match="h2[span[@id='Notes_et_r.C3.A9f.C3.A9rences']]"/>
<!-- Ignoring divs by default: they are not relevant to us -->
<xsl:template match="div[not(descendant::table)]" mode="#all"/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please