<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
  "/usr/share/xml/docbook/schema/dtd/4.4/docbookx.dtd">
<article>
  <articleinfo>
    <title>TD-6 : Relax-NG avancé</title>
    <author>
      <firstname>Benoît</firstname>
      <surname>Valiron</surname>
    </author>
  </articleinfo>

  <sect1>
    <title>Contenu mixte</title>
    <subtitle>(Reprise du TD 5)</subtitle>
    <para>
      Le format XML pour une biographie est le suivant : la racine est
      <code>bio</code> ; ses fils sont dans l'ordre un élément
      <code>nom</code> et du texte. Le texte peut contenir des
      morceaux en italique et en gras, encadrés par des balises
      <code>i</code> et <code>b</code>.
    </para>
    <para>
      Écrivez une feuille de validation Relax-NG pour ce format
      (version XML et version compacte).
    </para>
    <para>
      Modifiez vos schémas pour donner comme espace de noms
      <code>bio:court</code> aux éléments <code>bio</code> et
      <code>nom</code> et l'espace de noms
      <code>http://www.w3.org/1999/xhtml</code> aux éléments
      <code>b</code> et <code>i</code>.
    </para>
    <para>
      Donnez un titre et une description à vos schémas en utilisant le format Dublin core
      (<code>http://purl.org/dc/1.1/elements/</code>). Documentez aussi
      les éléments <code>bio</code> et 
      <code>nom</code> avec la balise <code>description</code> de Dublin core.
    </para>
    <para>
      Quelle serait une DTD correspondante ? Quels problèmes
      rencontre-t-on ?
    </para>
  </sect1>

  <sect1>
  <title>Sitemaps</title>
  <subtitle>(Reprise du TD 4)</subtitle>
  <para>
    Le moteur de recherche google propose un service aux webmasters
    pour l'indexation : les sitemaps. Il s'agit d'un format XML pour
    donner des informations succintes au robot d'indexation sur les
    pages qu'il peut rencontrer.  Le format est le suivant (pris sur
    wikipedia) :
    <itemizedlist>
    <listitem><para> Élément
    <code>&lt;urlset&gt;</code>. Obligatoire. Racine du document.
    </para></listitem>

    <listitem><para> Élément
    <code>&lt;url&gt;</code>. Obligatoire. Élément parent pour chaque
    entrée.  Les éléments restant sont tous fils de cet élément.
    </para></listitem>
    <listitem><para> Élément
    <code>&lt;loc&gt;</code>. Obligatoire. Contient l'adresse internet
    d'une page, incluant le protocole (<code>http://</code> ou
    <code>https://</code>). Doit faire au maximum 2048 caractères de
    long.  </para></listitem>

    <listitem><para> Élément
    <code>&lt;lastmod&gt;</code>. Facultatif. La date de dernière
    modification du fichier, en format ISO ou plus simplement
    YYYY-MM-DD.  </para></listitem>
    <listitem><para> Élément
    <code>&lt;changefreq&gt;</code>. Facultatif. Fréquence à laquelle
    la page est modifiée en général : <code>always</code>,le
    <code>hourly</code>, <code>daily</code>, <code>weekly</code>,
    <code>monthly</code>, <code>yearly</code>, <code>never</code>.
    </para></listitem>

    <listitem><para> Élément
    <code>&lt;priority&gt;</code>. Facultatif. L'importance relative
    de cette page par rapport aux autres. Valeur entre 0.0 et 1.0,
    valeur par défaut de 0.5.  </para></listitem>
    </itemizedlist>
  </para>
  
  <para>
    Est-il possible d'écrire une DTD qui prenne en compte toutes les
    contraintes ?
  </para>
  <para>
    Écrivez une feuille de validation Relax-NG qui réponde aussi
    précisemment que possible à la spécification.
  </para>
  </sect1>  


  
  <sect1>
    <title>Document composite</title>
    <subtitle>(Reprise du TD 2)</subtitle>
    <para>
      On reprend ici le flux RSS de thèses en ligne.
      Un format DTD (très) simplifié est le suivant :
      <programlisting><![CDATA[<!ELEMENT rss (channel)>
<!ATTLIST rss xmlns:dc CDATA #FIXED 
                          "http://purl.org/dc/elements/1.1/"
              version CDATA #REQUIRED>
<!ELEMENT channel (title,link,description,item*)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT link (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT item (link|pubDate|title|dc:creator|dc:description|
                dc:title|description)*>
<!ELEMENT dc:creator (#PCDATA)>
<!ELEMENT dc:description (#PCDATA)>
<!ELEMENT dc:title (#PCDATA)>
<!ELEMENT pubDate (#PCDATA)>]]></programlisting>
    </para>
    <para>
      Écrivez un schéma Relax-NG en syntaxe simplifiée et en syntaxe
      XML qui corresponde à cette DTD. (Attention aux espaces de noms!)
    </para>
    
    <para>
      Modifiez les schémas pour forcer l'élément <code>pubDate</code>
      à avoir comme type <code>date</code>, l'élément
      <code>link</code> le type <code>anyURI</code> et l'attribut
      <code>version</code> le type <code>décimal</code> et comme
      valeur soit 1.0, soit 2.0.
    </para>
  </sect1>

  
  <sect1>
    <title>Encore des espaces de noms.</title>
    <subtitle>(Reprise du TD 2)</subtitle>
    <para>
      Donnez un schéma Relax-NG pour le document suivant. Utilisez les
      type XML-Schema pour être aussi précis que possible.
      <programlisting><![CDATA[<?xml version="1.0" encoding="UTF-8"?> 
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
         xmlns:pcv="http://prismstandard.org/namespaces/pcv/1.0/" 
         xmlns:dc="http://purl.org/dc/elements/1.1/">

<rdf:Description 
   rdf:about="http://wanderlust.com/2000/08/Corfu.jpg"> 
  <dc:identifier 
     rdf:resource="http://wanderlust.com/content/2357845" /> 
  <dc:creator> 
    <pcv:Descriptor rdf:about="http://wanderlust.com/emp3845"> 
      <pcv:label>John Peterson </pcv:label> 
    </pcv:Descriptor> 
  </dc:creator> 
  <dc:coverage> 
    <pcv:Descriptor 
    rdf:about="http://prismstandard.org/vocabs/ISO-3166/GR"> 
      <pcv:label xml:lang="en">Greece</pcv:label> 
      <pcv:label xml:lang="fr">Grece</pcv:label> 
    </pcv:Descriptor> 
  </dc:coverage> 
</rdf:Description> 
</rdf:RDF>]]></programlisting>
    </para>
  </sect1>



</article>

