Commit 1ff3b8cc authored by lhommeni's avatar lhommeni

Premire version de la gestion du listing info et ajout de la gestion des fichiers en plus des urls

parent fbcfca0a
<?xml version="1.0" encoding="UTF-8"?>
<project name="wikiToHdoc" default="main" basedir="..">
<!-- input path -->
<property name="in" value="${basedir}/input"/>
<!-- inputFile is the only required parameter to run the script -->
<property name="inputFile" value="source.xml"/>
<property name="inputFile" value="${inputFile}/source.xml"/>
<basename property="filename" file="${inputFile}" suffix=".xml"/>
<!-- Folder paths -->
......@@ -30,7 +33,7 @@
<mkdir dir="${hdocResultPath}"/>
<!-- Making tmp xml wikipedia file without some elements which are not useful -->
<xslt classpath="ant/saxon9he.jar" in="ant/${inputFile}" out="${tmpFolderPath}/${filename}_prepared.xml" style="${xsltFolderPath}/prepare_wiki_to_hdoc.xsl">
<xslt classpath="lib/saxon9he.jar" in="input/${inputFile}" out="${tmpFolderPath}/${filename}_prepared.xml" style="${xsltFolderPath}/prepare_wiki_to_hdoc.xsl">
<factory name="net.sf.saxon.TransformerFactoryImpl"/>
</xslt>
</target>
......@@ -49,15 +52,20 @@
</rootfiles>
</container>
</echoxml>
<xslt classpath="ant/saxon9he.jar" in="${tmpFolderPath}/containerTmp.xml" out="${tmpHdocResultFolderPath}/META-INF/container.xml" style="${xsltFolderPath}/addNamespaceToContainer.xsl"/>
<xslt classpath="lib/saxon9he.jar" in="${tmpFolderPath}/containerTmp.xml" out="${tmpHdocResultFolderPath}/META-INF/container.xml" style="${xsltFolderPath}/addNamespaceToContainer.xsl"/>
</target>
<target name="transformWikiToHdoc">
<!-- Applying wikipedia -> hdoc -->
<xslt classpath="ant/saxon9he.jar" in="${tmpFolderPath}/${filename}_prepared.xml" out="${hdocResultPath}/${filename}.html" style="${xsltFolderPath}/wiki_to_hdoc.xsl">
<xslt classpath="lib/saxon9he.jar" in="${tmpFolderPath}/${filename}_prepared.xml" out="${hdocResultPath}/${filename}.html" style="${xsltFolderPath}/wiki_to_hdoc.xsl">
<factory name="net.sf.saxon.TransformerFactoryImpl"/>
</xslt>
<!-- Copy listing files -->
<copy todir="${tmpHdocResultFolderPath}/listing" >
<fileset dir="${hdocResultPath}/listing" includes="**"/>
</copy>
<!-- Copy of the html file, hdoc needs "container.xml" file, not a html. The html file can be useful to the user -->
<copy file="${hdocResultPath}/${filename}.html" tofile="${tmpHdocResultFolderPath}/content.xml"/>
</target>
......
......@@ -67,6 +67,11 @@
<factory name="net.sf.saxon.TransformerFactoryImpl"/>
</xslt>
<!-- Copy listing files -->
<copy todir="${tmpHdocResultFolderPath}/listing" >
<fileset dir="${hdocResultPath}/listing" includes="**"/>
</copy>
<!-- Copy of the html file, hdoc needs "container.xml" file, not a html. The html file can be useful to the user -->
<copy file="${hdocResultPath}/${filename}.html" tofile="${tmpHdocResultFolderPath}/content.xml"/>
</target>
......
......@@ -3,6 +3,7 @@
<!-- inputFile is the only required parameter to run the script -->
<property name="inputFile" value="source.xml"/>
<!-- Name of the output file -->
<basename property="filename" file="${inputFile}" suffix=".xml"/>
<!-- Folder paths -->
......@@ -24,6 +25,7 @@
<ant antfile="${basedir}/hdoc_to_opale/hdoc_to_opale.ant" dir="${basedir}/hdoc_to_opale">
<property name="InputPath" value="${hdocResultPath}/${filename}.hdoc"/>
<property name="OutputPath" value="${hdocResultPath}/${filename}.scar"/>
<property name="OutputPathDivided" value="${hdocResultPath}/${filename}_divided.scar"/>
</ant>
</target>
</project>
\ No newline at end of file
......@@ -340,18 +340,6 @@
<ref name="VideoType"/>
</element>
</define>
<!-- Listing Informatique -->
<define name="ListingInformatique">
<element name="ListingInformatique">
<attribute name="language">
<text/>
</attribute>
<element name="content">
<text/>
</element>
</element>
</define>
<!-- Other external resources -->
<define name="Object">
......
......@@ -68,7 +68,23 @@
<choice>
<value>application/vnd.oasis.opendocument.graphics </value>
<value>application/vnd.oasis.opendocument.spreadsheet</value>
<value>application/pdf</value>
<value>application/pdf</value>
<!-- xml -->
<value>application/xml</value>
<!-- .java -->
<value>text/x-java-source</value>
<!-- .cpp et .c -->
<value>text/x-c</value>
<!-- .py -->
<value>text/x-script.phyton</value>
<!-- .js -->
<value>application/x-javascript</value>
<!-- .html -->
<value>text/html</value>
<!-- .css -->
<value>text/css</value>
<!-- json -->
<value>application/json</value>
</choice>
</attribute>
</define>
......
This diff is collapsed.
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
public class FetchWikipediaXml {
public static void main(String[] args) throws Exception {
URL url = new URL(args[0]);
String destination = args[1];
System.out.println("URL "+args[0]);
System.out.println("File "+args[1]);
if(destination.length() == 0 || !args[0].contains("wikipedia.org/wiki"))
throw new Exception("Received invalid parameters");
BufferedInputStream in = null;
FileOutputStream fout = null;
in = new BufferedInputStream(url.openStream());
fout = new FileOutputStream("result/" + destination + "/" + destination + ".xml");
final byte data[] = new byte[1024];
int count;
while ((count = in.read(data, 0, 1024)) != -1) {
fout.write(data, 0, count);
}
if (in != null) {
in.close();
}
if (fout != null) {
fout.close();
}
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
......@@ -36,11 +36,7 @@
</section>
<section>
<header>
<h1>
En Java
</h1>
<h1>En Java</h1>
</header>
<div>
<p>En
......@@ -50,19 +46,17 @@
<p>Pour créer un nouvel objet, le mot-clé
<i>new</i> doit être suivi d'une méthode qui soit un constructeur. Par exemple, on pourra avoir :
</p>
<object type="application/vnd.oasis.opendocument.spreadsheet" data="listing/listing1.txt"></object>
<p>si toutefois la classe
<i>MaClasse</i> a un constructeur qui possède deux paramètres : un entier et une chaîne de caractères.
</p>
<p>Pour créer un nouveau tableau, on peut par exemple écrire :</p>
<object type="application/vnd.oasis.opendocument.spreadsheet" data="listing/listing2.txt"></object>
</div>
</section>
<section>
<header>
<h1>
En C++
</h1>
<h1>En C++</h1>
</header>
<div>
<p>En
......@@ -71,20 +65,19 @@
du mot-clé
<i>new</i>. Le constructeur peut utiliser la syntaxe constructeur(argument) : variable(argument) pour initialiser les variables.
</p>
<object type="application/vnd.oasis.opendocument.spreadsheet" data="listing/listing3.txt"></object>
</div>
</section>
<section>
<header>
<h1>
En C#
</h1>
<h1>En C#</h1>
</header>
<div>
<p>Exemple de constructeur en
<a href="http://wikipedia.org/wiki/C_sharp">C#</a> :
</p>
<object type="application/vnd.oasis.opendocument.spreadsheet" data="listing/listing4.txt"></object>
<object type="application/vnd.oasis.opendocument.spreadsheet" data="listing/listing5.txt"></object>
<p>Il existe par ailleurs en C# des
<a href="http://wikipedia.orghttp://msdn.microsoft.com/fr-fr/library/k9x6w0hc.aspx">constructeurs statiques</a>, qui permettent d'initialiser une donnée statique et d'effectuer une action particulière
devant être effectuée une seule fois. Les constructeurs statiques sont appelés implicitement
......@@ -92,15 +85,13 @@
déclenche l'exécution du constructeur statique.
</p>
<p>Exemple d'utilisation d'un constructeur statique :</p>
<object type="application/vnd.oasis.opendocument.spreadsheet" data="listing/listing6.txt"></object>
<object type="application/vnd.oasis.opendocument.spreadsheet" data="listing/listing7.txt"></object>
</div>
</section>
<section>
<header>
<h1>
Critique
</h1>
<h1>Critique</h1>
</header>
<div>
<p>Dans les langages tels
......
<?xml version="1.0" encoding="UTF-8"?>
<?oxygen RNGSchema="http://scenari.utc.fr/hdoc/schemas/container/hdoc1-container.rng" type="xml"?>
<container xmlns="urn:utc.fr:ics:hdoc:container" version="1.0">
<rootfiles>
<rootfile full-path="content.xml" media-type="text/xml"/>
</rootfiles>
</container>
<?xml version="1.0" encoding="UTF-8"?><?oxygen RNGSchema="http://scenari.utc.fr/hdoc/schemas/xhtml/hdoc1-xhtml.rng" type="xml"?>
<html xmlns="http://www.utc.fr/ics/hdoc/xhtml">
<head>
<title>Constructeur (programmation) — Wikipédia</title>
<meta charset="utf-8"></meta>
<meta name="generator" content="HdocConverter/wikipedia"></meta>
<meta name="author" content="Wikipedia"></meta>
</head>
<body>
<section data-hdoc-type="introduction">
<header>
<h1>Introduction</h1>
</header>
<div>
<p>Un
<em>constructeur</em> est, en
<a href="http://wikipedia.org/wiki/Programmation_orient%C3%A9e_objet">programmation orientée objet</a>, une
<a href="http://wikipedia.org/wiki/Fonction_informatique">fonction</a> particulière appelée lors de l'
<a href="http://wikipedia.org/wiki/Instanciation">instanciation</a>. Elle permet d'
<a href="http://wikipedia.org/wiki/Allocation_de_m%C3%A9moire">allouer</a> la mémoire nécessaire à l'objet et d'initialiser ses
<a href="http://wikipedia.org/wiki/Attribut_(informatique)">attributs</a>.
</p>
<p>Si le langage l'autorise, la
<a href="http://wikipedia.org/wiki/Surd%C3%A9finition">surcharge</a> est possible et les constructeurs se différencient par le nombre et le type des paramètres
passés et renvoyés mais aussi par le formalisme employé. Dans de nombreux langages,
on distingue certains constructeurs en particulier :
</p>
<p>Ces deux constructeurs ont souvent une définition attribuée par défaut par le
<a href="http://wikipedia.org/wiki/Compilateur">compilateur</a>. Le constructeur par défaut n'a alors aucun effet ; le constructeur de recopie par
contre recopiera les valeurs de tous les membres de l'objet donné vers l'objet courant.
Ceci peut s'avérer particulièrement dangereux, spécialement dans le cas où des
<a href="http://wikipedia.org/wiki/Pointeur_(programmation)">pointeurs</a> sont alloués par le constructeurs et libérés par le
<a href="http://wikipedia.org/wiki/Destructeur">destructeur</a>.
</p>
</div>
</section>
<section>
<header>
<h1>En Java</h1>
</header>
<div>
<p>En
<a href="http://wikipedia.org/wiki/Java_(langage)">Java</a>,
<i>new</i> est un opérateur unaire de construction qui crée un nouvel objet ou un nouveau tableau.
</p>
<p>Pour créer un nouvel objet, le mot-clé
<i>new</i> doit être suivi d'une méthode qui soit un constructeur. Par exemple, on pourra avoir :
</p>
<object type="application/pdf" data="listing/listing1.txt"></object>
<p>si toutefois la classe
<i>MaClasse</i> a un constructeur qui possède deux paramètres : un entier et une chaîne de caractères.
</p>
<p>Pour créer un nouveau tableau, on peut par exemple écrire :</p>
<object type="application/pdf" data="listing/listing2.txt"></object>
</div>
</section>
<section>
<header>
<h1>En C++</h1>
</header>
<div>
<p>En
<a href="http://wikipedia.org/wiki/C%2B%2B">C++</a>, le constructeur est une fonction membre publique de la classe portant le même nom
que celle-ci. Il est appelé lors de la déclaration de l'objet ou lors de l'utilisation
du mot-clé
<i>new</i>. Le constructeur peut utiliser la syntaxe constructeur(argument) : variable(argument) pour initialiser les variables.
</p>
<object type="application/pdf" data="listing/listing3.txt"></object>
</div>
</section>
<section>
<header>
<h1>En C#</h1>
</header>
<div>
<p>Exemple de constructeur en
<a href="http://wikipedia.org/wiki/C_sharp">C#</a> :
</p>
<object type="application/pdf" data="listing/listing4.txt"></object>
<object type="application/pdf" data="listing/listing5.txt"></object>
<p>Il existe par ailleurs en C# des
<a href="http://wikipedia.orghttp://msdn.microsoft.com/fr-fr/library/k9x6w0hc.aspx">constructeurs statiques</a>, qui permettent d'initialiser une donnée statique et d'effectuer une action particulière
devant être effectuée une seule fois. Les constructeurs statiques sont appelés implicitement
avant qu'une instance ne soit crée. Tout appel à une classe (appel statique ou constructeur),
déclenche l'exécution du constructeur statique.
</p>
<p>Exemple d'utilisation d'un constructeur statique :</p>
<object type="application/pdf" data="listing/listing6.txt"></object>
<object type="application/pdf" data="listing/listing7.txt"></object>
</div>
</section>
<section>
<header>
<h1>Critique</h1>
</header>
<div>
<p>Dans les langages tels
<a href="http://wikipedia.org/wiki/Java_(langage)">Java</a>, l'appel à un constructeur est équivalent à l'appel d'une méthode statique, ce qui
rend plus difficile l'écriture de
<a href="http://wikipedia.org/wiki/Test_unitaire">tests unitaires</a> pour une méthode. L'
<a href="http://wikipedia.org/wiki/Injection_de_d%C3%A9pendance">injection de dépendance</a> permet au programmeur de ne plus devoir écrire aucun appel de constructeur car le
<a href="http://wikipedia.org/wiki/Framework">framework</a> d'injection de dépendance s'en charge à sa place.
</p>
</div>
</section>
</body>
</html>
\ No newline at end of file
MaClasse obj;
...
obj = new MaClasse(5, "bonjour");
String[] arguments = new String[10];
// ou bien :
int[][] uneMatrice = new int[4][5];
// ou encore :
int[][] quatreLignes = new int[4][];
class Object
{
public :
Object (); // Constructeur par défaut
Object (int n) : nombre(n){}; // Constructeur paramétrique
Object (const Object&); // Constructeur par recopie
~Object (); // Destructeur
int nombre;
};
int main ()
{
Object obj, *p_obj; // Appel du constructeur par défaut pour obj
p_obj=new Object(27); // Appel du constructeur paramétrique pour créer un objet pour p_obj
Object obj2(obj); // Appel du constructeur par recopie pour obj2
delete p_obj; // Appel du destructeur pour détruire l'objet contenu dans p_obj
} // Appel du destructeur pour obj et obj2
public class MaClasse
{
private int a;
private string b;
// Constructeur
public MaClasse() : this(42, "string")
{
}
// Surcharge d'un constructeur
public MaClasse(int a, string b)
{
this.a = a;
this.b = b;
}
}
// Instanciation d'un objet à l'aide du constructeur
MaClasse c = new MyClass(42, "string");
public class MaClasse
{
private static int _A;
// Constructeur statique
static MaClasse()
{
_A = 32;
}
// Constructeur standard
public MaClasse()
{
}
}
// Instanciation d'un objet à l'aide du constructeur
// juste avant l'instanciation
// Le constructeur statique est exécuté, _A prend la valeur 32
MaClasse c = new MaClasse();
application/x-hdoc+zip
\ No newline at end of file
MaClasse obj;
...
obj = new MaClasse(5, "bonjour");
String[] arguments = new String[10];
// ou bien :
int[][] uneMatrice = new int[4][5];
// ou encore :
int[][] quatreLignes = new int[4][];
class Object
{
public :
Object (); // Constructeur par défaut
Object (int n) : nombre(n){}; // Constructeur paramétrique
Object (const Object&); // Constructeur par recopie
~Object (); // Destructeur
int nombre;
};
int main ()
{
Object obj, *p_obj; // Appel du constructeur par défaut pour obj
p_obj=new Object(27); // Appel du constructeur paramétrique pour créer un objet pour p_obj
Object obj2(obj); // Appel du constructeur par recopie pour obj2
delete p_obj; // Appel du destructeur pour détruire l'objet contenu dans p_obj
} // Appel du destructeur pour obj et obj2
public class MaClasse
{
private int a;
private string b;
// Constructeur
public MaClasse() : this(42, "string")
{
}
// Surcharge d'un constructeur
public MaClasse(int a, string b)
{
this.a = a;
this.b = b;
}
}
// Instanciation d'un objet à l'aide du constructeur
MaClasse c = new MyClass(42, "string");
public class MaClasse
{
private static int _A;
// Constructeur statique
static MaClasse()
{
_A = 32;
}
// Constructeur standard
public MaClasse()
{
}
}
// Instanciation d'un objet à l'aide du constructeur
// juste avant l'instanciation
// Le constructeur statique est exécuté, _A prend la valeur 32
MaClasse c = new MaClasse();
MaClasse obj;
...
obj = new MaClasse(5, "bonjour");
String[] arguments = new String[10];
// ou bien :
int[][] uneMatrice = new int[4][5];
// ou encore :
int[][] quatreLignes = new int[4][];
class Object
{
public :
Object (); // Constructeur par défaut
Object (int n) : nombre(n){}; // Constructeur paramétrique
Object (const Object&); // Constructeur par recopie
~Object (); // Destructeur
int nombre;
};
int main ()
{
Object obj, *p_obj; // Appel du constructeur par défaut pour obj
p_obj=new Object(27); // Appel du constructeur paramétrique pour créer un objet pour p_obj
Object obj2(obj); // Appel du constructeur par recopie pour obj2
delete p_obj; // Appel du destructeur pour détruire l'objet contenu dans p_obj
} // Appel du destructeur pour obj et obj2
public class MaClasse
{
private int a;
private string b;
// Constructeur
public MaClasse() : this(42, "string")
{
}
// Surcharge d'un constructeur
public MaClasse(int a, string b)
{
this.a = a;
this.b = b;
}
}
// Instanciation d'un objet à l'aide du constructeur
MaClasse c = new MyClass(42, "string");
public class MaClasse
{
private static int _A;
// Constructeur statique
static MaClasse()
{
_A = 32;
}
// Constructeur standard
public MaClasse()
{
}
}
// Instanciation d'un objet à l'aide du constructeur
// juste avant l'instanciation
// Le constructeur statique est exécuté, _A prend la valeur 32
MaClasse c = new MaClasse();
<?xml version="1.0" encoding="UTF-8"?><?oxygen RNGSchema="http://scenari.utc.fr/hdoc/schemas/xhtml/hdoc1-xhtml.rng" type="xml"?>
<html xmlns="http://www.utc.fr/ics/hdoc/xhtml">
<head>
<title>Constructeur (programmation) — Wikipédia</title>
<meta charset="utf-8"></meta>
<meta name="generator" content="HdocConverter/wikipedia"></meta>
<meta name="author" content="Wikipedia"></meta>
</head>
<body>
<section data-hdoc-type="introduction">
<header>
<h1>Introduction</h1>
</header>
<div>
<p>Un
<em>constructeur</em> est, en
<a href="http://wikipedia.org/wiki/Programmation_orient%C3%A9e_objet">programmation orientée objet</a>, une
<a href="http://wikipedia.org/wiki/Fonction_informatique">fonction</a> particulière appelée lors de l'
<a href="http://wikipedia.org/wiki/Instanciation">instanciation</a>. Elle permet d'
<a href="http://wikipedia.org/wiki/Allocation_de_m%C3%A9moire">allouer</a> la mémoire nécessaire à l'objet et d'initialiser ses
<a href="http://wikipedia.org/wiki/Attribut_(informatique)">attributs</a>.
</p>
<p>Si le langage l'autorise, la
<a href="http://wikipedia.org/wiki/Surd%C3%A9finition">surcharge</a> est possible et les constructeurs se différencient par le nombre et le type des paramètres
passés et renvoyés mais aussi par le formalisme employé. Dans de nombreux langages,
on distingue certains constructeurs en particulier :
</p>
<p>Ces deux constructeurs ont souvent une définition attribuée par défaut par le
<a href="http://wikipedia.org/wiki/Compilateur">compilateur</a>. Le constructeur par défaut n'a alors aucun effet ; le constructeur de recopie par
contre recopiera les valeurs de tous les membres de l'objet donné vers l'objet courant.
Ceci peut s'avérer particulièrement dangereux, spécialement dans le cas où des
<a href="http://wikipedia.org/wiki/Pointeur_(programmation)">pointeurs</a> sont alloués par le constructeurs et libérés par le
<a href="http://wikipedia.org/wiki/Destructeur">destructeur</a>.
</p>
</div>
</section>
<section>
<header>
<h1>En Java</h1>
</header>
<div>
<p>En
<a href="http://wikipedia.org/wiki/Java_(langage)">Java</a>,
<i>new</i> est un opérateur unaire de construction qui crée un nouvel objet ou un nouveau tableau.
</p>
<p>Pour créer un nouvel objet, le mot-clé
<i>new</i> doit être suivi d'une méthode qui soit un constructeur. Par exemple, on pourra avoir :
</p>
<object type="application/pdf" data="listing/listing1.txt"></object>
<p>si toutefois la classe
<i>MaClasse</i> a un constructeur qui possède deux paramètres : un entier et une chaîne de caractères.
</p>
<p>Pour créer un nouveau tableau, on peut par exemple écrire :</p>
<object type="application/pdf" data="listing/listing2.txt"></object>
</div>
</section>
<section>
<header>
<h1>En C++</h1>
</header>
<div>
<p>En
<a href="http://wikipedia.org/wiki/C%2B%2B">C++</a>, le constructeur est une fonction membre publique de la classe portant le même nom
que celle-ci. Il est appelé lors de la déclaration de l'objet ou lors de l'utilisation
du mot-clé
<i>new</i>. Le constructeur peut utiliser la syntaxe constructeur(argument) : variable(argument) pour initialiser les variables.
</p>
<object type="application/pdf" data="listing/listing3.txt"></object>
</div>
</section>
<section>
<header>
<h1>En C#</h1>
</header>
<div>
<p>Exemple de constructeur en
<a href="http://wikipedia.org/wiki/C_sharp">C#</a> :
</p>
<object type="application/pdf" data="listing/listing4.txt"></object>
<object type="application/pdf" data="listing/listing5.txt"></object>
<p>Il existe par ailleurs en C# des
<a href="http://wikipedia.orghttp://msdn.microsoft.com/fr-fr/library/k9x6w0hc.aspx">constructeurs statiques</a>, qui permettent d'initialiser une donnée statique et d'effectuer une action particulière
devant être effectuée une seule fois. Les constructeurs statiques sont appelés implicitement
avant qu'une instance ne soit crée. Tout appel à une classe (appel statique ou constructeur),
déclenche l'exécution du constructeur statique.
</p>
<p>Exemple d'utilisation d'un constructeur statique :</p>
<object type="application/pdf" data="listing/listing6.txt"></object>
<object type="application/pdf" data="listing/listing7.txt"></object>
</div>
</section>
<section>
<header>
<h1>Critique</h1>
</header>
<div>
<p>Dans les langages tels
<a href="http://wikipedia.org/wiki/Java_(langage)">Java</a>, l'appel à un constructeur est équivalent à l'appel d'une méthode statique, ce qui
rend plus difficile l'écriture de
<a href="http://wikipedia.org/wiki/Test_unitaire">tests unitaires</a> pour une méthode. L'
<a href="http://wikipedia.org/wiki/Injection_de_d%C3%A9pendance">injection de dépendance</a> permet au programmeur de ne plus devoir écrire aucun appel de constructeur car le
<a href="http://wikipedia.org/wiki/Framework">framework</a> d'injection de dépendance s'en charge à sa place.
</p>
</div>
</section>