CSI 3540 - Laboratoire 2

solution

* Objectifs

  - Savoir créer des DTDs simples
  - Comprendre le DTD de XHTML
  - Développer les pages à l'aide du langage de balisage XHTML
  - Se familiariser avec Glassfish, un environnement intégré, entre
    autres, pour des conteneurs de servlets, de services et de pages
    statiques

* Contenu du laboratoire

  - Définition de type de document (DTD)

    Voici une description en français des documents DTD :
    http://www.la-grange.net/w3c/html4.01/intro/sgmltut.html#h-3.3

  - Étant donné le DTD suivant:

    <!ELEMENT tableau (entete?, (ligne+), propr?)>
    <!ELEMENT entete (#PCDATA)>
    <!ELEMENT ligne (#PCDATA)>
    <!ELEMENT propr EMPTY>
    <!ATTLIST propr num ID #REQUIRED>

    Pour chacun des exemples qui suivent, dites si le code XML est
    syntaxiquement correct, et donnez une brève description de
    l'erreur s'il y lieu, en vous référant au DTD.

    <tableau>
      <ligne>Un</ligne>
      <ligne>Deux</ligne>
      <ligne>Trois</ligne>
    </tableau>

    <tableau>
      <ligne>Un</ligne>
      <entete>Nombres</entete>
    </tableau>

    <tableau>
      <entete>Nombres</entete>
    </tableau>

    <tableau>
      <entete>Nombres</entete>
      <ligne>Un</ligne>
      <propr num="1"></propr>
    </tableau>

  - Concevoir un DTD

    Je souhaite sauvegarder en format XML des informations sur les
    démonstrateurs qui travaillent pour moi. Veuillez m'aider et
    concevoir un DTD, fichier demo.dtd, selon les spécifications
    suivantes:
    - L'élément racine est démonstrateurs
    - L'élément démonstrateurs a ou plusieurs fils démonstrateur
    - L'élément démonstrateur a un fils nom, suivi d'un fils courriel,
      suivi de zéro ou plus éléments url, suivi d'un élément optionnel
      relation
    - L'élément démonstrateur a un attribut obligatoire, sid, dont la
      valeur est un identifiant unique
    - L'élément démonstrateur a un attribut optionnel, correcteur, dont la
      valeur est soit vrai ou faux (en français) et la valeur par
      défaut est faux
    - L'élément nom a deux formats de contenu possible, dans le
      premier cas, le format est patronyme, suivi du prénom, suivi
      d'une liste, possiblement vide, d'initiales. Le second format
      est prénom, suivi d'une liste, possiblement vide, d'initiales,
      c'est-à-dire zéro ou plusieurs éléments initiale, finalement
      suivi du patronyme
    - L'élément patronyme ne contient que du texte
    - L'élément prénom ne contient que du texte
    - L'élément initiale ne contient que du texte
    - L'élément courriel ne contient que du texte
    - L'élément url n'a pas de balise fermante
    - L'élément url possède un attribut href
    - L'élément relation n'a pas de balise fermante
    - L'élément relation peut avoir un attribut chef dont
      la valeur est un identifiant existant du document
    - L'élément relation peut avoir un attribut subordonnés dont
      la valeur est une liste identifiants existants du document

    Voici deux documents valides et un document contenant plusieurs
    erreurs:
    demo1.xml (faites 'Save as' pour voir le contenu XML)
    demo2.xml (faites 'Save as' pour voir le contenu XML)
    demo4.xml (faites 'Save as' pour voir le contenu XML)

    Pour faciliter votre travail, voici un programme Java pour la validation
    de fichiers XML (le contenu du programme sera discuté en classe
    après l'examen partiel):

    Validator.java
    > java Validator demo1.xml (ne produit rien sur la sortie)
    > java Validator demo2.xml (ne produit rien sur la sortie)
    > java Validator demo4.xml (produit une liste de messages d'erreurs)

  - Conception de documents XHTML

    Les documents doivent être des documents valides XHTML Strict ou
    Frameset, de version 1.0 ou 1.1.

    <!DOCTYPE html
	    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	    "www.w3.org—xhtml1-strict.dtd <http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>">

    Utilisez le site suivant pour la validation des pages :

    http://validator.w3.org

    Utilisez Glassfish pour servir les pages créées pour ce
    laboratoire (ou tout simplement Explorer). Si vous utilisez
    Glassfish, les pages doivent être disponibles à l'URL qui suit :

    http://localhost:8080/laboratoire/01

    URL pour HTML 4.01 (la base de XHTML 1.0 et 1.1)

    http://www.la-grange.net/w3c/html4.01/cover.html

    -- Exercises 2.30 de la page 118 du livre.

       Essentiellement, vous devez créer des pages HTML pour quelques
       éléments du langage.

       --- Le premier document est un index global et comprend une
           liste ayant deux items: lien vers un index d'éléments et
           lien vers un index d'attributs.

       --- L'index d'éléments est composé d'un tableau à 2 colonnes:
           1ere colonne est le nom de l'élément, 2ième colonne pour la
           liste des attributs.  Il doit y avoir un attribut par ligne
           et le nom de l'élément doit couvrir toutes ces lignes.  La
           table devrait être facile à lire.  Il faut donc contrôler
           l'emplacement du texte à l'intérieur de la cellule.

       Voir page 118 pour plus de détails.

       Suggestion pour la liste des éléments : meta, a, div et span

       (a) élément meta
        
           Nous avons vu en classe l'utilisation de meta et de l'attribut
           http-equiv pour ajouter une déclaration de jeu de caractères.

           - Complémente cette discussion avec une présentation de meta et
             de l'attribut ROBOTS :

           Section B.4 'Remarques pour aider les moteurs de recherche à indexer votre site Web'
           http://www.la-grange.net/w3c/html4.01/appendix/notes.html#h-B.4

      (b) élément a

          Cet élément joue deux rôles: source et destination d'un lien.

          Présente un exemple ou a sert de destination.  Par exemple, 
          <a name="h-B.4">B.4</a> de la page qui suit:

         http://www.la-grange.net/w3c/html4.01/appendix/notes.html#h-B.4

      (c) div et span seront utiles pour la discussion sur les feuilles de
          styles en cascade

  - Exercises 2.31 des pages 118 et 119 du livre.  

  - Installation de GlassFish et exploration de l'environnement

    -- Qu'est-ce que GlassFish

    Un environnement intégré pour des conteneurs de servlets, de
    services, un serveur de pages statiques, et même une banque de
    données.

    -- Téléchargez et installez

    glassfish.dev.java.net

    -- Démarrer l'application

    bin/asadmin start-domain domain1

    --- Survol des fonctionnalités

    Explorer le côté serveur et le côté administration de l'application.

    http://localhost:8080
    http://localhost:4848

    -- Éditer ou changer la page de départ par défaut

    domains/domain_name/docroot/index.html 

    -- Déployer une application

    Votre démonstrateur vous donnera de brèves explications sur le
    format .war.

    Archive, en format .jar, ayant une structure de fichiers
    (partiellement) prédéfinie, ...

    -- Explorer les diverses façons de déployer une application Web.

    hello.war
    echo.war
    snipsnap.org

    --- Nous revisiterons, en profondeur, certaines façons plus tard,
        par exemple, l'utilisation de asant.

    --- La façon d'installer les applications Web et librairies de
        méthodes présentées dans le livre n'est pas très élégante et
        demandera un certain effort lors des mises à jour de
        TOMCAT/GlassFish.

        Il est préférable de définir des variables d'environnement
        qui pointent vers des répertoires contenant les librairies
        locales.

        Ce problème est presque inexistant avec GlassFish (qui fournit
        sa propre version de ant).

        Suggestion: déploiement de hello.war à l'aide d'autodeploy et
        de snipsnap à l'aide de la console d'administration.

        1. répertoire autodeploy

        cp hello.war domains/domain1/autodeploy

        2. déploiement à l'aide du menu Web Application de la console

        http://localhost:4848/

        3. ant (présenté plus tard dans le semestre)

        Regarder le résultat

        http://localhost:8080/hello/

        http://localhost:8080/snipsnap

        Pour compléter l'installation, il faut consulter

        domains/domain1/logs/server.log (chercher 'Your installation key is ...')

    --- Quelques tests à l'aide de telnet localhost 8080

    --- Stopper GlassFish