Teinte est une librairie XSLT et PHP qui peut s’utiliser dans plusieurs contextes : dans un serveur web, avec un éditeur XML et un navigateur, en ligne de commande.
Teinte est utilisé pour la publication en ligne de fichiers XML-TEI. Le principe est de générer à l’avance différents formats (sous forme de fichiers), avec une petite base de données SQLite pour les métadonnées et la recherche plein texte. Les éléments sont agrégés par une page PHP libre, sans contraintes de framework. Un projet éditorial peut en effet agréger des types de documents très différents.
Sur un serveur, une installation pour plusieurs corpus peut se présenter de cette manière. Teinte sert de librairie
- www/
- Livrable/ (pour epub, lecture seule, git clone https://github.com/oeuvres/Livrable.git)
- Teinte/ (publication web, lecture seule, git clone https://github.com/oeuvres/Teinte)
- critique/ (le corpus, accessible en écriture au serveur apache, ex: https://github.com/OBVIL/mythographie)
- .htaccess (redirections Apache pour URL propres)
- _conf.php (source du fichier de configuration)
- conf.php (fichier de configuration modifié, avec le mot de passe)
- index.php (page de publication agrégeant les éléments textuels)
- pull.php (page d’administration)
- manuels/*.xml (sources XML/TEI)
- (dossiers générés par pull.php et agrégés par index.php)
- article/ (les textes affichés)
- toc/ (dossier généré, les tables des matières)
- epub/ (livres électroniques ouvert, epub)
- kindle/ (livres électroniques kindle, mobi)
- xml/ (sources XML/TEI des textes)
L’OBVIL a normalisé la publication de corpus XML/TEI avec Teinte, par exemple https://github.com/obvil/critique/. Dans le principe, la procédure est élémentaire. Le seul point délicat est d’assurer une configuration des droits qui permettent au serveur web (ex : Apache) d’écrire dans le dossier du corpus, de créer des dossiers, tout en n’interdisant pas à un utilisateur d’y intervenir. La configuration des droits dépend de la politique du serveur, des habitudes des administrateurs. La procédure se présentera donc en deux parties : le principe, simple ; le réglage des droits, plus délicat.
# se placer dans le dossier de son serveur web
cd /var/www/
git clone https://github.com/obvil/critique/
cd critique
cp _conf.php conf.php
# modifier le mot de passe
vi conf.php
Dans la ligne
"pass" => ""
mot de passe dans une chaîne entre guillemets
"pass" => "MonMotDePasseQueJeNeRetiensJamais"
Aller voir votre site dans un navigateur, ex:
http://obvil.paris-sorbonne.fr/corpus/corpus
Si aucun texte apparaît, c’est normal, vous êtes invité à visiter la page d’administration
http://obvil.paris-sorbonne.fr/corpus/corpus/pull.php
Avant que cela fonctionne (cf. erreurs possibles ci-dessosu), modifier les droits. Assurer que l’administrateur système appartient à un groupe avec le serveur http (ex: apache, www-data, _www).
# Dans le dossier de votre corpus
cd critique
# donner l’option +s à tous les dossiers (permet de propager le nom du groupe aux fichiers créés)
find . -type d -exec chmod g+s {} \;
# Attribuer récursivement tous les fichiers à ce groupe
chown -R :apache .
# Donner le droit d’écrire au groupe
chmod -R g+w .
Dans l’interface web de mise à jour
error: cannot open .git/FETCH_HEAD: Permission denied
Problème de droits, Apache ne peut pas écrire dans le dossier git
solution, dans le dossier :
sudo chown -R :apache .
article/ impossible à créer.
Problème de droits, Apache ne peut pas écrire dans le dossier git
solution, dans le dossier
sudo chown -R :apache .
From https://github.com/OBVIL/corpus
3d04adf..be29dad gh-pages -> origin/gh-pages
error: Your local changes to the following files would be overwritten by merge:
.htaccess
Please, commit your changes or stash them before you can merge.
Aborting
Updating 3d04adf..be29dad
Vous avez changé vous même un fichier sur votre serveur, par FTP ou SSH, il n’est plus synchrone avec le Git, le supprimer du serveur et l’établir comme vous le souhaitez dans le git.
Obtenir la dernière version de Teinte
oeuvres$ git clone https://github.com/oeuvres/Teinte.git
Pour ceux qui ne sont pas familiers de git, le dossier peut être téléchargé, zip, mais il faudra retélécharger le dossier en cas de mise à jour de librairie.
- Teinte/
- tei2html.xsl
- teinte.rng
- …
- corpus/
- xml/
- auteur_titre.xml
- auteur_titre2.xml
- xml/
Associer les fichiers XM/TEI aux ressources de Teinte, les liens relatifs dépendent de la structure des dossiers ../../
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="http://oeuvres.github.io/Teinte/teinte.rng" type="application/xml"
schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-stylesheet type="text/css" href="../../Teinte/opentei.css"?>
<?xml-stylesheet type="text/xsl" href="../../Teinte/tei2html.xsl"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0" xml:lang="fr">
…
<?xml-model
reconnu par Oxygen XML Editor, lié ici au schéma de validation Teinte exposé sur internet.
<?xml-stylesheet type="text/css"
lien à une feuille de style CSS, pour la vue auteur (pas de tranformation, donc pas de table des matières ou de placement des notes en bas de page).
<?xml-stylesheet type="text/xsl"
lien à une transformation XSL, reconnu par xsltproc, ou les navigateurs.
Transformation d’un fichier XML/TEI dans le navigateur, exemple : http://dramacode.github.io/bibdramatique/corneillet_camma.xml En ligne, cela fonctionne dans la plupart des navigateurs. Pour des fichiers locaux, cela permet de travailler l’édition XML dans l’éditeur, et d’en voir l’effet directement dans le navigateur, en rechargeant. Toutefois, plusieurs navigateurs limitent cette poossibilité pour des raisons de sécurité (same origin policy). Cela fonctionne directement dans Safari et Internet Explorer, voir en annexe pour modifier la configuration de Firefox. Pour Chrome, Opera, ou Microsoft Edge, pas de hacks trouvés
TODO
- available formats
- html : complete html document with prolog,
<head>
and toc. - article : html fragment ready to be inserted, embed in an
<article>
element. - markdown : text/plain format in markdown syntax compatible with GitHub.
- iramuteq : a text format used byt the Iramuteq software, a text analysis tool http://www.iramuteq.org/
Teinte is visible as Github pages (branch gh-pages) to allow Internet linking.
XSL transformation
$ xsltproc http://oeuvres.github.io/Teinte/tei2html.xsl corpus.xml > corpus.html
Validation avec Oxygen
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="http://oeuvres.github.io/Teinte/teinte.rng"
type="application/xml"
schematypens="http://relaxng.org/ns/structure/1.0"?>
PHP est un langage serveur, il peut aussi être utilisé en ligne de commande http://php.net/manual/features.commandline.introduction.php
- Ubuntu
sudo apt-get install php5-cli
- Windows, ajouter php.exe à son path, more http://php.net/manual/install.windows.commandline.php
- Taper
about:config
dans la barre d’adresse - Accepter l4alerte de sécurité
- Rechercher security.fileuri.strict_origin_policy
- Le fixer à false
Explanations: https://developer.mozilla.org/en-US/docs/Same-origin_policy_for_file:_URIs