INaLCO - M2 Traductique

Cours XML 2013-2014

Jean-François Perrot

Le cahier des charges du projet est en ligne !
avec une proposition de réalisation

  1. Principe

  2. Plan de marche
    1. 15/01 : Idées générales sur XML
    2. 22/01 : DTD & validation
    3. 29/01 : XPath
    4. 5/02 : Namespaces
    5. 12/02 : reprise du cours n°3 : XPath
    6. 19/02 : XSLT
    7. 5/03 : RDF & SPARQL
    8. 12/03 : DBPedia, Ontologies

    9. 19/03 : Technique pour le projet 1 : Grammaires RelaxNG
    10. 26/03 : Technique pour le projet 2 : XSLT (comptages et recopies)
    11. 2/04 : Technique pour le projet : compléments
    12. 9/04 : Technique pour le projet : bilan


Principe

Plan de marche

  1. 15/01 : Idées générales sur XML

    Référence : Détails sur la représentation des arbres en XML

    1. Exemple : Les pièces de Shakespeare en XML.
      • Visualisation de la structure arborescente par différents navigateurs (Safari, Firefox)
      • Confrontation avec le texte-source
      • Examen de la DTD.

    2. Transformations
      d'un format XML "naturel" vers un format standard (c'est-à-dire, pour lequel il existe des logiciels capables de le traiter)
      illustrées sur l'exemple d'Othello.xml
      • Vers XHTML, pour visualisation à l'écran, dans un navigateur : Othello.html
      • Vers XSLT-FO, pour sortie sur papier en pdf
        • le fichier XML qui spécifie en détail le format d'impression : Othello.fo
        • le fichier pdf produit à partir de Othello.fo par le logiciel Apache-Fop : Othello.pdf
  2. 22/01 : DTD & validation

    Référence : Notes de cours

    1. Les attributs dans les balises :  Explications

    2. Exemples


    3. Information et méta-information
      • Il faut bien distinguer deux niveaux dans le contenu informatif d'un document XML :
        1. Un niveau générique, ou structurel, ou encore niveau méta :
          constitué des noms des balises et des attributs.
          c'est celui qui est matérialisé par la DTD.
        2. Un niveau spécifique, constitué des valeurs des attributs et des contenus textuels

        En d'autres termes,
        1. le niveau générique vise un concept (abstrait),
        2. le niveau spécifique une instance (concrète) de ce concept.

        Par exemple, pour les voitures,
        • la DTD nous dit comment une voiture est décrite (en général)
          ou la forme que nous donnons au concept de voiture
        • un document conforme à cette DTD décrit une voiture particulière.

      • Naturellement, il est facile de battre en brèche cette distinction, en disant que le document Renault, par exemple, ne décrit nullement une voiture particulière concrète, mais le concept plus restreint de Renault Safrane rouge, etc,.. dont il existe des dizaines d'exemplaires !
        Nous touchons là au problème général de la deixis, à savoir la possibilité de désigner un objet singulier par un texte sans préciser le contexte.
        La distinction en question prend en XML une importance particulière à cause de
        • la matérialisation du niveau méta par le DTD (ou le schéma, ou la grammaire RNG)
        • les contraintes lexicales qui pèsent sur les noms de balises et d'attributs, contraintes qui sont interprétées de manière variable selon les logiciels, et peuvent conduire à des blocages inattendus.

      • Exemple : deux manières d'afficher une liste de pays avec leurs capitales (illustration des charmes d'UTF-8)
        à examiner avec Firefox et  avec un autre navigateur - et en allant regarder le code-source.


    4. Mise en œuvre de la validation
      • en local, par la commande xmllint --valid leFichierXML
        (la DTD peut être distante)

      • et si on veut employer une DTD différente de celle du fichier (notamment, si le fichier ne mentionne point de DTD)
        xmllint leFichierXML --dtdvalid leFichierDTD

      • en réseau, avec le validateur du W3G : http://validator.w3.org/
        • sur une DTD standard PUBLIC (genre HTML ou XHTML)
        • sur une DTD maison, logée sur un serveur acces

    5. Exercices pratiques (sur machine) : Écrire les DTDs et vérifier leur adéquation pour
  3. 29/01 : XPath

  4. 5/02 : Namespaces

    1. L'idée et sa réalisation : Notes de cours
      Sur le statut des URI des espaces de noms (namespaces) voyez la notion de Dereferenceable URI,
      qui apparaît dans la théorie du Web sémantique (Linked Data), dont nous parlerons plus tard.
      Dans cette terminologie, les URI d'espaces de noms sont non-déréférençables.

    2. Exemples (balises-racines):
      • XHTML : <html xmlns="http://www.w3.org/1999/xhtml">
      • XSLT : <xsl:stylesheet  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      • XSL-FO : <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
      • XML-Schémas : <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      • Grammaires RNG : <grammar xmlns="http://relaxng.org/ns/structure/1.0">
      • RDF : <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
      • Résulats de requêtes SPARQL : <sparql xmlns="http://www.w3.org/2005/sparql-results#">

    3. Exemple avec plusieurs namespaces, tiré du monde des services Web :
    4. Mise en œuvre avec XPath-PHP

      1. Il faut informer la fonction xpath() des espaces de noms qui seront utilisés dans les expressions XPath,
        par exemple : $doc->registerXPathNamespace('h', 'http://www.w3.org/1999/xhtml');
        avec un préfixe non-vide, même si l'URL en question désigne le default namespace dans le document XML visé.

      2. Et il faut écrire ses expressions XPath en conséquence !

      3. Exemple : transposition du problème de Thao pour un fichier de noms-notes en RDF du genre

        <?xml version="1.0" encoding="utf-8"?>
        <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
                 xmlns:epita="http://epita/masters/international/"
                 xml:base="http://epita/masters/international/perso">
           <rdf:Description rdf:about="#Toto">
              <epita:note >12</epita:note>
           </rdf:Description>
           <rdf:Description rdf:about="#Tata">
              <epita:note >13</epita:note>
           </rdf:Description>
           <rdf:Description rdf:about="#Tutu">
              <epita:note >17</epita:note>
           </rdf:Description>
           <rdf:Description rdf:about="#Titi">
              <epita:note >11</epita:note>
           </rdf:Description>
        </rdf:RDF>


        Une solution déduite de la version sans namespaces
  5. 12/02 : reprise du cours n°3 : XPath

  6. 19/02 : XSLT

    1. Référence : les sections II et III du cours XSLT
      http://pagesperso-systeme.lip6.fr/Jean-Francois.Perrot/inalco/XMLA/Cours2/XSLT/ 


    2. L'exemple des pièces de Shakespeare (cf. cours n° 1)
      de Othello.xml à Othello.html grâce à la feuille de style Shak.xsl

      réaliser la transformation avec la commande xsltproc :
      xsltproc la-feuille-de style.xsl la-source.xml > le-résultat.html

    3. Autre exemple (cf. cours n°2) : Les deux manières d'afficher une liste de pays avec leurs capitales (illustration des charmes d'UTF-8)
      à examiner avec Firefox et  avec un autre navigateur - et en allant regarder le code-source.
      Cherchez les feuilles de style !

    4. La place des namespaces, le traitement des DTDs : comment produire du XHTML valide ?

    5. Exercice : écrire une feuille de style qui affiche en XHTML le contenu du  fichier de noms-notes en RDF du cours n°4.


    26/02 : Vacances de neige

  7. 5/03 : RDF & SPARQL

    à RDF et à SPARQL

  8. 12/03 : DBPedia, Ontologies

  9. 19/03 : Technique pour le projet 1 : Grammaires RelaxNG

    Exemples traités en cours :
  10. 26/03 : Technique pour le projet 2 : XSLT (comptages et recopies)

    Technique XSLT pour "enrichir" un document XML :

  11. 2/04 : Technique pour le projet : compléments

    Étudiez et adaptez l'esquisse qui servira de base au cours.
  12. 9/04 : Technique pour le projet : bilan